DX12 학습 전에 11On12를 배우는 이유
Direct3D 12(DX12) 는 매우 로우 레벨 API이기 때문에, 메모리 관리, 동기화, 리소스 상태 전환 등을 직접 처리해야 합니다.
반면, 11On12는 DX11 스타일의 코드를 유지하면서 DX12의 일부 기능을 활용할 수 있도록 지원하는 래퍼 API입니다.
즉, DX11의 편의성을 유지하면서 DX12를 조금씩 익힐 수 있는 단계적인 학습 방법이 될 수 있습니다.
🚀 DX12 학습 전에 11On12를 먼저 익히면 좋은 이유
1️⃣ DX11 스타일로 DX12의 개념을 익힐 수 있음
- DX12는 모든 리소스와 명령을 직접 관리해야 하기 때문에 진입장벽이 높습니다.
- 11On12는 DX11과 DX12를 혼합하여 사용할 수 있어, DX11 스타일로 코딩하면서 DX12의 일부 개념을 익히는 것이 가능합니다.
- DX11의 편리한 API를 사용하면서 DX12의 커맨드 큐(Command Queue)와 커맨드 리스트(Command List) 개념을 경험할 수 있습니다.
2️⃣ 리소스와 명령 버퍼 개념을 쉽게 익힐 수 있음
- DX12에서는 명령을 직접 조립하고 실행해야 하므로 동기화 및 리소스 상태 관리를 수동으로 처리해야 합니다.
- 11On12는 DX11의 인터페이스를 유지하면서 DX12의 리소스를 다룰 수 있도록 지원합니다.
- 예제: DX12에서는 리소스를 사용하려면
ResourceBarrier()
를 직접 호출해야 하지만, 11On12에서는 DX11처럼 자동으로 관리됩니다.
- DX12 스타일의 커맨드 큐와 스왑 체인을 다루면서, 명령 리스트와 동기화 개념을 미리 익힐 수 있습니다.
3️⃣ DX12의 복잡한 초기화 과정을 생략 가능
- DX12에서는 GPU와 CPU의 동기화를 직접 관리해야 하며, Fence, Descriptor Heap 설정 등이 필요합니다.
- 11On12는 DX11의 디바이스를 사용하면서 DX12의 기능을 활용할 수 있기 때문에, 복잡한 설정을 생략하면서 DX12 개념을 익히는 것이 가능합니다.
- 예제: DX12에서 루트 서명(Root Signature)과 PSO(Pipeline State Object) 를 설정해야 하지만, 11On12에서는 DX11처럼 자동 설정이 가능합니다.