Vulkan tutorial #5 part2. Command Buffers Overview
vulkan에서는 command buffer를 이용해서 function call을 전해주어야 한다.
command buffer는 커맨드 열들을 받아서 frame마다 전해주는 방식으로 작동한다
우리는 이강의에서 두가지 방식의 comaand buffer를 작성하려 한다.
Option 1 : initialization할 떄 command buffer를 저장한 다음 각 프레임 마다 재사용하기
Option 2 : 매 프레임 전에 command buffer를 다시 저장하는 방식
커맨드 버퍼의 생명주기는 위와 같다
command buffer가 record가 완료되면 excutable, Queue에 제출되면 pending 사용이 다 끝나면 다시 Executable로 변한
swapchain class를 살펴보면 우리는 command buffer를 2개까지만 지원 해준다는 것을 알 수 있다.
FirstApp을 작성하다보면 CommandBuffer에는 두가지 방식이 존재한다고 한다 Primary 그리고 Secondary
Primary는 Device Graphics Queue에 직접적으로 적용되지만, 다른 Command Buffer에 호출될 수는 없고,
Secondary는 Device Graphics Queue에 제출될 수는 없지만, 다른 Command buffer에 호출 될 수 있다.
renderPassInfo에서 0번째 배열에 color 1번째 배열에 depthstencil만 적용하는 이유는 framebuffer에서 애초에 받아드리는 값이 0번째의 color만 그리고 1번째의 depthStencil버퍼만 받아들이기 때문이다.
vkCmdBeginRenderPass()함수의 세번째 매개변수인 VK_SUBPASS_CONTENTS_INLINE 이 키워드는 대표적으로 Inline 과 secondary_command_buffers가 있는데, primary가 다른 secondary buffer를 불러오지 않으면 inline 그 외에는 secondary command buffer 키워드를 불러오면 된다.