http://go.microsoft.com/fwlink/?LinkID=615561
저작권 (c) 마이크로소프트 주식회사.
2024년 10월 28일
이 패키지에는 Windows 11 및 Windows 10용 UWP(유니버설 Windows 플랫폼) 앱용 Direct3D 12 C++ 코드 작성을 위한 도우미 클래스 컬렉션인 "DirectX 도구 키트", Xbox Series X|S 및 Xbox One용 게임 타이틀, Win32가 포함되어 있습니다. Windows 11 및 Windows 10용 데스크톱 애플리케이션.
이 코드는 Visual Studio 2019(16.11), Visual Studio 2022, Windows v12 이상용 clang 또는 MinGW 12.2를 사용하여 빌드하도록 설계되었습니다. Visual Studio에는 Windows 10 2020년 5월 업데이트 SDK(19041) 이상을 사용해야 합니다.
이러한 구성 요소는 레거시 DirectX SDK의 콘텐츠 없이도 작동하도록 설계되었습니다. 자세한 내용은 DirectX SDK는 어디에 있습니까?를 참조하세요.
Inc
공용 헤더 파일(DirectX C++ 네임스페이스):
Src
Audio
build
MakeSpriteFont 및 XWBTool은 DirectX 11용 DirectX 도구 키트에서 찾을 수 있습니다.
문서는 GitHub 위키에서 볼 수 있습니다.
이 패키지의 모든 콘텐츠와 소스 코드에는 MIT 라이선스 조건이 적용됩니다.
최신 버전의 DirectXTK12, 버그 리포트 등을 보려면 GitHub의 프로젝트 사이트를 방문하세요.
Visual Studio DGSL(Directed Graph Shader Language) 효과 셰이더(예: DGSLEffect )는 지원되지 않습니다. CMO 파일은 BasicEffect 또는 SkinnedEffect 재질을 사용하여 로드됩니다.
VertexTypes에는 DGSL 파이프라인과 함께 사용하도록 고안된 VertexPositionNormalTangentColorTexture 또는 VertexPositionNormalTangentColorTextureSkinning이 포함되어 있지 않습니다.
DirectX 11용 DirectX 도구 키트는 기능 수준 9.x를 지원하는 반면 DirectX 12에는 Direct3D 기능 수준 11.0이 필요합니다. 더 낮은 기능 수준 장치에는 예상되는 DirectX 12 드라이버가 없습니다.
라이브러리는 Windows 10(일명 _WIN32_WINNT=0x0A00
)용으로 구축되어 있다고 가정하므로 XAudio 2.9 및 WIC2는 물론 DirectX 12도 사용합니다.
오디오, 게임패드, 키보드, 마우스 및 SimpleMath용 DirectX 도구 키트는 DirectX 11 버전과 동일합니다.
보안 자문은 GitHub를 참조하세요.
전체 변경 내역을 보려면 CHANGELOG.md를 참조하세요.
2024년 6월 릴리스에서는 BufferHelpers 의 CreateUploadBuffer
함수에 대한 기본 매개변수 initialState
제거되었습니다. DirectX 12 유효성 검사 계층에 따라 업로드 버퍼의 유일한 유효한 초기 상태는 D3D12_RESOURCE_STATE_GENERIC_READ
입니다.
2023년 2월 릴리스부터 상대 마우스 이동의 Mouse 클래스 구현이 업데이트되어 GetState
호출 간의 변경 사항이 누적되었습니다. 기본적으로 GetState
호출할 때마다 상대 이동을 사용하지만 프레임당 한 번만 메서드를 호출하는 시나리오에서 작동하는 델타가 재설정됩니다. 프레임당 두 번 이상 호출하는 경우 대신 명시적 재설정 모델을 사용하려면 EndOfInputFrame
에 대한 명시적 호출을 추가하세요.
2022년 9월 릴리스부터 라이브러리는 DirectX 도구 키트 의 DirectX 11 및 DirectX 12 버전에서 동일한 이름을 가진 다양한 유형에 대해 C++11 인라인 네임스페이스를 사용합니다. 이는 링커 출력 메시지에 표시되는 DirectX::DX12::SpriteBatch
와 같은 링크 고유 이름을 제공합니다. 그러나 대부분의 사용 사례에서는 클라이언트 코드에 명시적인 DX12
네임스페이스 확인을 추가할 필요가 없습니다.
2021년 6월 릴리스부터 이 라이브러리는 DXC를 통해 Shader Model 6으로 HLSL 셰이더를 빌드합니다. 자세한 내용은 이 위키 페이지를 참조하세요. Microsoft GDK 프로젝트는 항상 Shader Model 6을 사용해 왔습니다.
2020년 6월 릴리스부터 이 라이브러리는 C++ 표준 섹션 17.5.2.1.3 비트마스크 유형 의 권장 사항에 따라 형식화된 열거형 비트마스크 플래그를 사용합니다. 이는 클라이언트 코드에 주요 변경 영향을 미칠 수 있습니다.
플래그 값으로 0
리터럴을 전달할 수 없습니다. 대신 적절한 기본 열거형 값( AudioEngine_Default
, SoundEffectInstance_Default
, ModelLoader_Clockwise
, DDS_LOADER_DEFAULT
또는 WIC_LOADER_DEFAULT
을 사용해야 합니다.
비트마스크 작업을 통해 로컬로 플래그 값을 구축하는 경우 DWORD
대신 열거형 유형을 사용하세요. 예를 들어, WIC_LOADER_FLAGS flags = WIC_LOADER_DEFAULT; if (...) flags |= WIC_LOADER_FORCE_SRGB;
UWP 프로젝트와 Win10 클래식 데스크톱 프로젝트에는 ARM64 플랫폼에 대한 구성이 포함되어 있습니다. 이를 구축하려면 ARM64 도구 세트를 설치해야 합니다.
ARM64/AArch64 개발의 경우 VS 2019 도구 세트보다 VS 2022 컴파일러를 사용하는 것이 좋습니다. Windows SDK(26100 이상)는 ARM64 개발의 Win32용 VS 2019와 호환되지 않습니다. ARM32/AArch32 플랫폼은 더 이상 사용되지 않습니다 .
ARM64/AArch64 플랫폼용 clang/LLVM을 사용하는 경우 Windows 11 SDK(22000) 이상이 필요합니다.
CompileShaders.cmd
스크립트에는 Windows 스타일(CRLF) 줄 끝이 있어야 합니다. Linux 스타일(LF) 줄 끝으로 변경되면 필요한 셰이더를 모두 빌드하지 못할 수 있습니다.
질문이 있는 경우 directxtk 태그와 함께 Stack Overflow를 사용하거나 dx12-developers 채널의 DirectX Discord Server를 사용해 보세요.
버그 보고서 및 기능 요청은 이 프로젝트의 GitHub 문제를 사용하세요.
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 귀하의 기여를 사용할 권리가 있고 실제로 그렇게 할 권리가 있음을 선언하는 기여자 라이센스 계약(CLA)에 동의해야 합니다. 자세한 내용을 보려면 https://cla.opensource.microsoft.com을 방문하세요.
끌어오기 요청을 제출하면 CLA 봇이 자동으로 CLA 제공이 필요한지 여부를 결정하고 PR을 적절하게 장식합니다(예: 상태 확인, 댓글). 봇이 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 저장소에서 이 작업을 한 번만 수행하면 됩니다.
새로운 기능에 대한 테스트도 Test Suite 저장소에 PR로 제출해야 합니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있는 경우 [email protected]으로 문의하세요.
이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표나 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인된 사용에는 Microsoft의 상표 및 브랜드 지침이 적용되며 이를 따라야 합니다. 이 프로젝트의 수정된 버전에 Microsoft 상표 또는 로고를 사용하면 혼동을 일으키거나 Microsoft 후원을 암시해서는 안 됩니다. 제3자 상표 또는 로고의 사용에는 해당 제3자의 정책이 적용됩니다.
DirectX 11용 DirectX 도구 키트는 Aaron Rodriguez Hernandez와 Dani Roman의 도움을 받아 Shawn Hargreaves와 Chuck Walbourn이 작업한 것입니다.
DirectX 12용 DirectX 도구 키트는 DirectX 11용 DirectX 도구 키트를 기반으로 하는 Pete Lewis, Justin Saunders 및 Chuck Walbourn의 작업입니다.
SDKMESH 파일 형식을 제공해 주신 Shanon Drone에게 감사드립니다.
측지선 구현을 도와주신 Adrian Tsai에게 감사드립니다.
DirectX 도구 키트용 NuGet 패키지를 만드는 데 도움을 준 Garrett Serack에게 감사드립니다.
노멀 매핑 및 PBR 셰이더 구현을 도와주신 Pete Lewis와 Justin Saunders에게 감사드립니다.
mGPU 지원에 대해 Travis Johnson에게 감사드립니다.
CMO 형식과 VS 스타터 키트 애니메이션에 도움을 준 Roberto Sonnino에게 감사드립니다.
Xbox PIX 사용자 정의 메모리 및 유형 할당 추적 이벤트 지원에 기여한 Richie Meyer에게 감사드립니다.
코드 검토에 지속적인 도움을 주신 Andrew Farrier와 Scott Matloff에게 감사드립니다.