Swap Chain 재생성(Swap Chain Recreation)
윈도우 크기가 변경되면 Vulkan의 Swap Chain(프레임 버퍼 및 렌더링 리소스)이 기존 크기에 고정되어 있으므로 새 크기에 맞춰 Swap Chain을 재생성해야 한다.
- 문제: Swap Chain의 리소스(프레임 버퍼, 컬러/깊이 첨부물 등)는 고정 크기이며, 윈도우 크기가 변경되면 충돌이 발생.
- 해결 방법:
- 윈도우 크기 변경 이벤트를 감지.
- Swap Chain과 관련된 리소스를 새 크기로 재생성.
그래픽 파이프라인(Graphics Pipeline)과 Swap Chain 의존성
기존 그래픽 파이프라인은 Swap Chain의 크기와 렌더 패스에 의존적이다.
- 문제:
- Swap Chain이 변경되면 그래픽 파이프라인을 재생성해야 함.
- 해결 방법:
- *Dynamic Viewport(동적 뷰포트)**와 **Dynamic Scissor(동적 가위 테스트)**를 사용해 파이프라인의 의존성을 줄임.
Command Buffer 재녹화(Command Buffer Re-recording)
Command Buffer는 Swap Chain의 크기와 렌더 패스에 강하게 의존적입니다. Swap Chain이 변경되면 Command Buffer를 다시 기록해야 한다.
- 문제: 기존 Command Buffer가 새로운 Swap Chain과 호환되지 않음.
- 해결 방법:
- Swap Chain 변경 시 Command Buffer를 해제(
vkFreeCommandBuffers)하고 새로 생성.
- 매 프레임마다 Command Buffer를 재녹화.