版權所有 (c) Microsoft Corporation。
2024 年 10 月 28 日
此包包含“DirectX 工具包”,這是一組幫助程式類,用於為Windows 11、Windows 10、Xbox One 和Windows 7 Service Pack 1 或Win32 桌面應用程式的通用Windows 平台(UWP) 應用程式編寫Direct3D 11 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
Audio.h - 使用 XAudio2 的低階音訊 API(用於音訊公共標頭的 DirectXTK)
BufferHelpers.h - 用於從 CPU 資料建立 D3D 資源的 C++ 幫助程序
CommonStates.h - 提供常用 D3D 狀態物件的工廠
DDSTextureLoader.h - 輕量級 DDS 檔案紋理載入器
DirectXHelpers.h - 用於 D3D 程式設計的雜項 C++ 幫助程序
Effects.h - 用於常見渲染任務的內建著色器集
GamePad.h - 使用 XInput、Windows.Gaming.Input 或 GameInput 的遊戲手把控制器助手
GeometricPrimitive.h - 繪製基本形狀,例如立方體和球體
GraphicsMemory.h - 管理動態圖形記憶體分配的幫助程序
Keyboard.h - 鍵盤狀態追蹤助手
Model.h - 繪製從 .CMO、.SDKMESH 或 .VBO 檔案載入的網格
Mouse.h - 滑鼠助手
PostProcess.h - 用於常見後處理操作的一組內建著色器
PrimitiveBatch.h - 繪製使用者基元的簡單有效的方法
ScreenGrab.h - 輕量級螢幕截圖保護程式
SimpleMath.h - DirectXMath 的簡化 C++ 包裝器
SpriteBatch.h - 簡單又有效率的 2D 精靈渲染
SpriteFont.h - 基於位圖的文字渲染
VertexTypes.h - 常用頂點資料格式的結構
WICTextureLoader.h - 基於 WIC 的圖片檔案紋理載入器
XboxDDSTextureLoader.h - DDSTextureLoader 的 Xbox One 獨佔應用程式變體
公共頭檔(在 DirectX C++ 命名空間中):
Src
DirectXTK 原始檔與內部實作頭文件
Audio
用於音訊來源檔案和內部實作標頭的 DirectXTK
MakeSpriteFont
用於產生與 SpriteFont 一起使用的二進位資源的命令列工具
XWBTool
用於建立 XACT 風格的波組的命令列工具,與 DirectXTK for Audio 的 WaveBank 類別一起使用
build
包含用於建置管道的 YAML 檔案以及一些雜項建置檔案和腳本。
文件可在 GitHub wiki 上找到。
該軟體包的所有內容和原始程式碼均受 MIT 授權條款的約束。
有關 DirectXTK 的最新版本、錯誤報告等,請造訪 GitHub 上的專案網站。
有關安全建議,請參閱 GitHub。
有關完整的變更歷史記錄,請參閱 CHANGELOG.md。
從 2023 年 2 月版本開始,相對滑鼠移動的 Mouse 類別實作已更新,以累積GetState呼叫之間的變更。預設情況下,每次呼叫GetState時,增量都會重置,這適用於使用相對移動但每個幀僅呼叫該方法一次的場景。如果每個幀調用它多次,則添加對EndOfInputFrame的明確呼叫以改用明確重置模型。
截至 2022 年 9 月版本,該程式庫對 DirectX 11 和 DirectX 12 版本的DirectX 工具包中具有相同名稱的不同類型使用 C++11 內聯命名空間。這提供了一個連結唯一名稱,例如DirectX::DX11::SpriteBatch ,它將出現在連結器輸出訊息中。然而,在大多數用例中,無需在客戶端程式碼中新增明確DX11命名空間解析。
從 2022 年 7 月版本開始,DDSTextureLoader Ex函數的bool forceSRGB參數現在是DDS_LOADER_FLAGS類型的枚舉位元遮罩標誌參數。這可能會對客戶端程式碼產生重大變更影響。將true替換為DDS_LOADER_FORCE_SRGB ,將false替換為DDS_LOADER_DEFAULT 。
自 2021 年 10 月版本起,DGSLEffect 不再直接支援蒙皮。相反,請使用源自 DGSLEffect 的SkinnedDGSLEffect 。
從 2020 年 6 月版本開始,該程式庫根據C++ 標準第17.5.2.1.3 位元遮罩類型的建議使用類型化枚舉位元遮罩標誌。這可能會對客戶端程式碼產生重大變更影響:
您不能將0文字作為標誌值傳遞。相反,您必須使用適當的預設枚舉值: AudioEngine_Default 、 SoundEffectInstance_Default 、 ModelLoader_Clockwise或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 或更高版本)與 VS 2019 for Win32 on ARM64 開發不相容。請注意,ARM32/AArch32 平台已棄用。
在 ARM64/AArch64 平台使用 clang/LLVM 時,需要 Windows 11 SDK (22000) 或更高版本。
CompileShaders.cmd腳本必須具有 Windows 樣式 (CRLF) 行結尾。如果將其變更為 Linux 樣式 (LF) 行結尾,則可能無法建立所有所需的著色器。
Xbox One 對 DirectX 11 的支援需要舊版 Xbox One XDK。請參閱 2023 年 2 月或更早版本的DirectX Tool Kit以取得所需的專案文件。
截至 2024 年 10 月版本,xwbtool 命令列工具也支援使用-- GNU 風格長選項。所有現有交換器繼續運作。 MakeSpriteFont 僅支援 POSIX 樣式參數的--version和--help 。
如有問題,請考慮使用帶有directxtk標籤的 Stack Overflow,或dx9-dx11-developers頻道中的 DirectX Discord Server。
對於錯誤報告和功能請求,請使用此專案的 GitHub 問題。
該項目歡迎貢獻和建議。大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA 機器人將自動確定您是否需要提供 CLA 並適當地裝飾 PR(例如,狀態檢查、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
新功能的測試也應作為 PR 提交到測試套件存儲庫。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。
DirectX 工具包是 Shawn Hargreaves 和 Chuck Walbourn 的成果,Aaron Rodriguez Hernandez 和 Dani Roman 也做出了貢獻。
感謝 Shanon Drone 提供 SDKMESH 檔案格式。
感謝 Adrian Tsai 的測地線球實現。
感謝 Garrett Serack 在為 DirectX 工具包創建 NuGet 套件方面提供的協助。
感謝 Roberto Sonnino 在CMO 、DGSL 渲染和 VS Starter Kit 動畫方面的幫助。
感謝 Pete Lewis 和 Justin Saunders 實作了法線貼圖和 PBR 著色器。
感謝 Andrew Farrier 和 Scott Matloff 在程式碼審查方面持續提供的幫助。