Search
Duplicate

Nuget패키지 D3D12 라이브러리 설치하기

NuGet으로 D3D12 설치하는 이유는?

엄밀히 말해 D3D12는 Windows SDK에 이미 포함되어 있으므로 "설치"가 필요한 건 아닙니다.
하지만 NuGet을 통해 추가적으로 개발에 편리한 헤더, 라이브러리, 샘플, 디버그 툴 등을 받아 쓸 수 있습니다.

대표적인 D3D 관련 NuGet 패키지

패키지 이름
설명
Microsoft.Direct3D.D3D12
최신 Direct3D 헤더/라이브러리 (Agility SDK 포함 가능)
Microsoft.Direct3D.D3D12.Agility
D3D12 Agility SDK – 최신 GPU 기능을 지원하려면 필요
WinPixEventRuntime
PIX용 GPU 마커 삽입용 런타임
DirectXTex, DirectXTK
이미지 로딩 및 텍스처 도구 (DirectXTex, DirectX ToolKit 등)

언제 NuGet을 써야 할까?

대표적 사용 목적

목적
이유
D3D12 Agility SDK 사용
최신 GPU 기능 (예: Mesh Shader) 활용하려면 NuGet 패키지 필요
Visual Studio에 자동 연동
NuGet은 VS 프로젝트에 자동으로 설정됨 (include/lib 경로 지정 포함)
Windows SDK 버전과 별개로 최신 DX 기능 테스트
OS에 종속되지 않고 최신 기능 테스트 가능

Direct3D는 왜 vcpkg로 안 받나요?

vcpkg와의 차이점 요약

항목
NuGet
vcpkg
목적
Windows API 확장, 최신 SDK 배포
오픈소스 라이브러리 설치 및 빌드 자동화
대상
주로 Microsoft 내부/OS 플랫폼 레벨 SDK
주로 게임/그래픽/유틸용 라이브러리 (stb, glm, imgui)
설치 위치
Visual Studio 솔루션 내 .nuget 폴더
전역 또는 사용자 지정 vcpkg_installed 폴더
DirectX 관련
Agility SDK, PIX Runtime, HLSL Shader Compiler 등 지원
일부만 지원 (directxtk, directxmath, d3d12-memory-allocator 등)

NuGet은 보통 .lib 파일은 자동 연결해주지만,

헤더 파일(.h) 경로는 직접 설정해줘야 할때가 많습니다.

YamYamEngine_CORE 에서 nuget 패키지관리 클릭
D3D12 검색후 아래 sdk 설치 최신버전을 설치하시면 됩니다.
YamYamEngine_Window 위 경로로 헤더경로를 잡아줍니다. 본인이 설치한 Nuget 패키지 버전으로 헤더경로를 잡아줍니다.
yaGraphics.h 에서 dx11을 제거해주신후 12버전을 다음과같이 헤더를 추가하여줍니다.
#include <include\d3dx12\d3dx12.h> 이부분이 잘 추가된후 빌드가 완료되면 세팅 완료
#pragma once #include "CommonInclude.h" #include <wrl.h> #include <d3d12.h> #include <dxgi1_6.h> #include <d3dcompiler.h> // d3dx12는 d3d12 이후 포함 //#include <include/d3dx12/d3dx12.h> #include <include\d3dx12\d3dx12.h> #pragma comment(lib, "d3d12.lib") #pragma comment(lib, "dxgi.lib") #pragma comment(lib, "d3dcompiler.lib") #define CB_GETBINDSLOT(name) __CBUFFERBINDSLOT__##name##__ #define CBUFFER(name, slot) static const int CB_GETBINDSLOT(name) = slot; struct alignas(16) name #define CBSLOT_TRANSFORM 0 //#define DX11_ENABLE #define DX12_ENABLE
C++
복사

Agility SDK는 무엇인가요?

Agility SDK는 Microsoft에서 만든 새로운 시스템으로,
운영체제를 업데이트하지 않아도 최신 DirectX 12 기능을 사용할 수 있게 해주는 도구입니다.
예를 들어 최신 D3D12 기능(예: Mesh Shader, Shader Model 6.7 등)을 사용하려면
기존에는 Windows 자체를 업데이트해야 했습니다.
하지만 Agility SDK를 프로젝트에 포함시키면,
운영체제와 상관없이 최신 기능을 사용할 수 있습니다.

NuGet으로 Agility SDK를 설치하는 이유는 무엇인가요?

NuGet은 Visual Studio에서 사용하는 패키지 관리 도구입니다.
쉽게 말하면, 필요한 라이브러리나 SDK를 클릭 한 번으로 설치하고 자동으로 설정해주는 도우미입니다.
Agility SDK를 NuGet으로 설치하면 다음과 같은 이점이 있습니다:
1.
최신 d3d12.h 헤더 파일과 라이브러리, DLL을 자동으로 설치합니다.
2.
Visual Studio 프로젝트에 자동으로 연결됩니다.
3.
복잡한 설정 없이 바로 최신 기능을 사용할 수 있습니다.

실제로 실행 시 어떤 일이 일어날까요?

프로그램을 실행하면, 일반적으로는 Windows에 설치된 d3d12.dll을 사용합니다.
하지만 Agility SDK를 사용하면,
실행 파일 옆에 있는 최신 버전의 d3d12.dll을 우선적으로 로딩하게 됩니다.
이렇게 하면 운영체제가 구버전이라도
최신 GPU 기능을 사용할 수 있게 되는 것입니다.

정리

항목
설명
Agility SDK란?
운영체제에 상관없이 최신 D3D12 기능을 사용하게 해주는 도구
NuGet 설치 이유
Agility SDK의 헤더, 라이브러리, DLL을 쉽게 설치하고 자동 설정
작동 방식
실행 시 최신 d3d12.dll을 직접 로딩해서 최신 기능 활성화