http://go.microsoft.com/fwlink/?LinkID=615561
版權所有 (c) Microsoft Corporation。
2024 年 10 月 28 日
此軟體包包含“DirectX 工具包”,這是一組幫助程式類,用於為Windows 11 和Windows 10 的通用Windows 平台(UWP) 應用程式、Xbox Series X|S 和Xbox One 的遊戲以及Win32 編寫Direct3D 12 C++ 程式碼。
此程式碼旨在使用 Visual Studio 2019 (16.11)、Visual Studio 2022、適用於 Windows v12 或更高版本的 clang 或 MinGW 12.2 進行建置。 Visual Studio 需要使用 Windows 10 May 2020 Update SDK (19041) 或更高版本。
這些元件設計為無需舊版 DirectX SDK 中的任何內容即可運作。有關詳細信息,請參閱 DirectX SDK 在哪裡?
Inc
公共頭檔(在 DirectX C++ 命名空間中):
Src
Audio
build
MakeSpriteFont 和 XWBTool 可以在 DirectX 11 的 DirectX 工具組中找到
文件可在 GitHub wiki 上找到。
該軟體包的所有內容和原始程式碼均受 MIT 授權條款的約束。
有關 DirectXTK12 的最新版本、錯誤報告等,請造訪 GitHub 上的專案網站。
不支援 Visual Studio 定向圖形著色器語言 (DGSL) 效果著色器(即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。
用於音訊、GamePad、鍵盤、滑鼠和 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 11 和 DirectX 12 版本的DirectX 工具包中具有相同名稱的不同類型使用 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 2022 編譯器,而不是 VS 2019 工具集。 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 在所有儲存庫中執行一次此操作。
新功能的測試也應作為 PR 提交到測試套件存儲庫。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。
DirectX 11 的 DirectX 工具組是 Shawn Hargreaves 和 Chuck Walbourn 的成果,Aaron Rodriguez Hernandez 和 Dani Roman 也做出了貢獻。
DirectX 12 的 DirectX 工具組是 Pete Lewis、Justin Saunders 和 Chuck Walbourn 的成果,很大程度上是基於 DirectX 11 的 DirectX 工具組。
感謝 Shanon Drone 提供 SDKMESH 檔案格式。
感謝 Adrian Tsai 的測地線球實現。
感謝 Garrett Serack 在為 DirectX 工具包創建 NuGet 套件方面提供的協助。
感謝 Pete Lewis 和 Justin Saunders 實作了法線貼圖和 PBR 著色器。
感謝 Travis Johnson 對 mGPU 的支持。
感謝 Roberto Sonnino 在 CMO 格式和 VS Starter Kit 動畫方面的幫助。
感謝 Richie Meyer 對 Xbox PIX 自訂記憶體和類型分配追蹤事件支援的貢獻。
感謝 Andrew Farrier 和 Scott Matloff 在程式碼審查方面持續提供的幫助。