1) Renderer 클래스
Renderer는 게임 엔진에서 렌더링과 관련된 핵심적인 책임을 맡는 클래스입니다. 다음과 같은 역할을 수행합니다:
- 스왑체인(Swap Chain) 및 커맨드 버퍼(Command Buffer) 관리
- 프레임의 시작(begin frame)과 끝(end frame) 처리
- 렌더 패스(Render Pass) 시작 및 종료
역할 분리의 이유
기존의 App 클래스는 렌더링뿐만 아니라 여러 역할을 동시에 수행하고 있었음. 이를 분리하여 코드의 유지보수성과 재사용성을 높이기 위해 렌더링 관련 기능을 별도의 Renderer 클래스로 이동
이렇게 하면:
- 책임 분리: 렌더링 기능은 Renderer 클래스에서만 관리.
- 확장성: 향후 다양한 렌더링 방식을 쉽게 추가할 수 있음.
- 코드 가독성 증가:
App 클래스의 역할이 단순해지고 명확해짐.
(2) System의 정의
강의에서 System은 특정한 기능을 수행하는 독립적인 논리적 단위를 의미함.
이와 관련해 Entity-Component-System(ECS) 구조와는 구별되지만, 유사한 개념으로 설명된다.
- System의 역할:
- **특정한 컴포넌트(Subset of Components)**를 가진 게임 오브젝트에 작용.
- 예를 들어, Rainbow System은 색상(Color) 컴포넌트를 가진 게임 오브젝트의 색을 매 프레임 무작위로 변경.
- ECS와의 차이점:
- ECS에서의 시스템은 전체 엔티티(Component의 조합)를 처리하는 논리 단위.
- 여기서는 단순히 일부 컴포넌트를 기준으로 작동하는 논리적인 기능 단위로 사용.
System의 예시
- Simple Renderer System:
- 게임 오브젝트의 렌더링에 초점.
- 특정 렌더 패스(Render Pass)와 파이프라인(Pipeline) 설정을 사용해 렌더링.
- Physics System: