'Renderer & Systems - Vulkan Game Engine Tutorial 11' 정리
Series - Vulkan Game Engine Tutorial 정리
Contents
LittleVulkanEngine 을 따라 만들어 보면서, Vulkan을 배워봅시다.
1. 주요내용
- 클래스 구조 리팩토링
- LveRenderer 클래스 추가
- FirstApp 클래스에서 SwapChain, Command Buffers, draw frame 관련 부분 뽑아냄
- SimpleRenderSystem 클래스 추가
- FirstApp 클래스에서 Pipeline, Pipeline Layout, render GameObjects 관련 부분 뽑아냄
2. 코드 수정
2.1. 개요
지금까지는 FirstApp에 너무 많은 기능이 몰려 있습니다. 요번 강에서 렌더링 관련 부분을 담당하는 클래스를 좀 떼어냅니다.
FisrtApp 의 기능 중 일부를 떼어내서
SwapChain, Command Buffers, draw Frame 을 담당하는 LveRenderer
클래스와,
Pipeline, Pipeline Layout, Push Constant 구조체, render GameObjects 를 담당하는 SimpleRenderSystem
을 만들 겁니다.
Renderer 는 하나만 존재하고, System 은 여러 종류가 있을 수 있습니다. (여기서의 “System” 은 ECS에서의 System을 의미하지는 않습니다.)
131s(아마도 GameObject는 그냥 각 System을 다 호출하고, System에서 분기를 하는 게 정석인 듯 하지만) 우리는 단순함을 위해, 호출부에서 특정 System을 호출해도 문제 없는지 잘 판단해서 호출하는 걸로 합니다.
2.2. LveRenderer 클래스 추가
- FirstApp에서 SwapChain, Command Buffers, draw Frame 관련 로직 옮겨 옵니다.
2.3. SimpleRenderSystem 클래스 추가
- FirstApp에서 Pipeline, Pipeline Layout, Push Constant, render GameObjects 관련 로직 옮겨 옵니다.
2.4. 결과 화면
10강과 같은 동작으로 삼각형이 오른쪽(시계 방향)으로 회전합니다.
3. 다이어그램
3.1. 클래스 다이어그램
아래 시퀀스 다이어그램과 같이 보면 좋습니다.