https://youtu.be/P1HEJEIH60A?feature=shared
DirectX 12는 Windows SDK에 기본적으로 포함되어 있지만, NuGet 패키지 관리자를 통해 추가 개발 도구와 최신 기능을 손쉽게 프로젝트에 통합할 수 있습니다. 이 문서에서는 NuGet을 사용하는 이유와 설치 과정, 그리고 Agility SDK의 개념을 상세히 다룹니다.
Windows SDK에는 기본적인 Direct3D 12 헤더와 라이브러리가 포함되어 있지만, 다음과 같은 이유로 NuGet 패키지를 추가로 사용합니다.
최신 기능 접근
Windows SDK는 운영체제 업데이트 주기에 따라 배포되기 때문에, 최신 GPU 기능과 API를 즉시 사용하기 어렵습니다. NuGet 패키지는 독립적으로 업데이트되어 최신 DirectX 12 기능을 빠르게 적용할 수 있습니다.
자동 프로젝트 구성
NuGet 패키지는 Visual Studio 프로젝트에 자동으로 통합됩니다. 헤더 경로, 라이브러리 링크, 종속성 관리가 자동으로 설정되어 수동 구성의 번거로움을 줄여줍니다.
개발 도구 통합
PIX 디버깅 도구, 셰이더 컴파일러, 텍스처 로딩 라이브러리 등 DirectX 개발에 필요한 추가 도구들을 간편하게 설치할 수 있습니다.
크로스 플랫폼 빌드 지원
NuGet 패키지는 여러 플랫폼과 Visual Studio 버전에서 일관된 빌드 환경을 제공합니다. 팀 협업 시 환경 차이로 인한 문제를 최소화할 수 있습니다.
DirectX 개발에 사용되는 대표적인 NuGet 패키지들은 다음과 같습니다.
| 패키지 이름 | 설명 |
|---|---|
| Microsoft.Direct3D.D3D12 | 최신 Direct3D 12 헤더와 라이브러리를 제공합니다. 기본 Windows SDK보다 최신 API를 포함합니다. |
| Microsoft.Direct3D.D3D12.Agility | D3D12 Agility SDK로, 운영체제 버전과 무관하게 최신 GPU 기능을 사용할 수 있게 합니다. Mesh Shader, Enhanced Barriers 등 최신 기능을 지원합니다. |
| WinPixEventRuntime | PIX GPU 프로파일러에서 사용할 수 있는 이벤트 마커를 코드에 삽입하기 위한 런타임입니다. 성능 분석과 디버깅에 필수적입니다. |
| DirectXTex | 이미지 파일을 로딩하고 텍스처로 변환하는 라이브러리입니다. DDS, PNG, JPEG 등 다양한 포맷을 지원하며, 밉맵 생성과 압축 기능을 제공합니다. |
| DirectXTK12 | DirectX Tool Kit으로, 스프라이트 렌더링, 모델 로딩, 입력 처리 등 게임 개발에 필요한 유틸리티 함수들을 제공합니다. |
| DirectXMath | SIMD 명령어를 활용한 고성능 수학 라이브러리입니다. 벡터, 행렬, 쿼터니언 연산을 제공합니다. |
| D3D12MemoryAllocator | DirectX 12의 복잡한 메모리 관리를 단순화하는 라이브러리입니다. 자동 메모리 풀링과 디프래그먼테이션을 지원합니다. |