이 프로젝트는 C++로 작성된 학습용 3D 비행 데모로, DirectX 12 그래픽스 API를 사용합니다. D3D12 렌더링 파이프라인의 CPU 측 설정을 학습하는데 중점을 둔 실습 예제입니다. 또한, 동작 명령 대기열과 씬 스택 관리 같은 게임 시스템 설계 패턴도 구현하고 있습니다.
DirectX 12 렌더링 파이프라인의 CPU 측 설정 및 실행 과정을 다루며, 디바이스 초기화부터 렌더링까지의 다섯 가지 핵심 단계로 구성됩니다.
⚠️ 참고: GPU 파이프라인의 셰이딩이나 래스터화 같은 내부 단계는 구체적으로 설명하지 않습니다.
초기화의 1~5단계는 Game::Initialize()에서 단 한번 실행됩니다.
bool Game::Initialize(){ // 1. 디바이스 초기화 if (!D3DApp::Initialize()) return false; // 2. 그래픽스 파이프라인 설정 BuildRootSignature(); BuildShadersAndInputLayout(); BuildPSOs(); // 3. 리소스 에셋 설정 LoadTextures(); BuildMaterials(); BuildDescriptorHeaps(); // 4. 기하 정보 및 정점 버퍼 설정 BuildShapeGeometry(); // 5. 프레임 리소스 설정 BuildFrameResources(); /* 코드 간결성을 위해 생략된 부분이 있습니다. */ return true;}
1 단계 - 디바이스 초기화
D3D12 디바이스란?
D3D12 디바이스는 프로그램과 GPU 사이의 핵심 인터페이스입니다. D3D12에서 모든 GPU 관련 작업을 관리하며, 주요 역할은 다음과 같습니다:
GPU가 현재 프레임을 처리하는 동안 CPU가 다음 프레임을 준비할 수 있게, 각 프레임에 필요한 리소스 집합(예: 상수버퍼와 커맨드 할당자)을 할당합니다.
맺는 말
이 프로젝트는 핵심 DirectX 12 개념을 명확하고 단계적인 파이프라인 설정을 통해 적용합니다. 렌더링을 넘어 동작 명령 대기열과 씬 스택 관리같은 시스템을 적용하여, C++ 기반의 확장 가능한 3D 애플리케이션을 체계적으로 구축 및 구현했습니다. 또한, 저레벨 그래픽스 프로그래밍과 엔진 아키텍쳐 설계에 입문하는 출발점이 되는 프로젝트였습니다.