http://go.microsoft.com/fwlink/?LinkId=248926
版權所有 (c) Microsoft Corporation。
2024 年 10 月 28 日
該軟體包包含 DirectXTex,這是一個共享來源庫,用於讀取和寫入.DDS
文件,並執行各種紋理內容處理操作,包括調整大小、格式轉換、mip-map 生成、Direct3D 運行時紋理資源的塊壓縮以及高度圖到法線。該庫使用 Windows Image Component (WIC) API。它還包括.TGA
和.HDR
讀取器和寫入器,因為這些圖像檔案格式通常用於紋理內容處理管道,但目前不受內建 WIC 編解碼器支援。
此程式碼旨在使用 Visual Studio 2019 (16.11)、Visual Studio 2022、適用於 Windows v12 或更高版本的 clang 或 MinGW 12.2 進行建置。 Visual Studio 需要使用 Windows 10 May 2020 Update SDK (19041) 或更高版本。它還可以使用 GCC 11 或更高版本為 Linux 的 Windows 子系統建置。
這些元件設計為無需舊版 DirectX SDK 中的任何內容即可運作。有關詳細信息,請參閱 DirectX SDK 在哪裡?
DirectXTex
這裡的大多數頭檔僅用於庫的內部實作(
BC.h
、BCDirectCompute.h
、DDS.h
、DirectXTexP.h
等)。只有DirectXTex.h
和DirectXTex.inl
才是庫的「公共」頭檔。
Auxiliary
Common
Texconv
此 DirectXTex 範例是使用 DirectXTex 而不是 D3DX 的 DirectX SDK 中的 texconv 命令列紋理實用程式的實作。
它支援與擴充紋理轉換工具( texconvex.exe
) 舊版 DirectX SDK 實用程式相同的參數。主要區別是-10
和-11
參數不適用以及過濾器名稱( POINT
、 LINEAR
、 CUBIC
、 FANT
或BOX
、 TRIANGLE
、 *_DITHER
、 *_DITHER_DIFFUSION
)。這也包括對 JPEG XR(高清照片)點陣圖格式的支援。
Texassemble
Texdiag
DDSView
DDSTextureLoader
ScreenGrab
WICTextureLoader
DDSTextureLoader11、ScreenGrab11 和 WICTextureLoader11 是 DX11 DirectX 工具套件中提供的相同模組的「獨立」版本
DDSTextureLoader12、ScreenGrab12 和 WICTextureLoader12 是 DX12 DirectX 工具套件中提供的相同模組的「獨立」版本。
build
文件可在 GitHub wiki 上找到。
該軟體包的所有內容和原始程式碼均受 MIT 授權條款的約束。
有關 DirectXTex 的最新版本、錯誤報告等,請造訪 GitHub 上的專案網站。
有關安全建議,請參閱 GitHub。
有關完整的變更歷史記錄,請參閱 CHANGELOG.md。
從 2022 年 7 月版本開始,CreateTextureEx 和 CreateShaderResourceViewEx 函數的bool forceSRGB
參數現在是CREATETEX_FLAGS
類型枚舉位元遮罩標誌參數。這可能會對客戶端程式碼產生重大變更影響。將true
替換為CREATETEX_FORCE_SRGB
,將false
替換為CREATETEX_DEFAULT
。
從 2020 年 6 月版本開始,該程式庫根據C++ 標準第17.5.2.1.3 位元遮罩類型的建議使用類型化枚舉位元遮罩標誌。這與 Direct3D 12 對DEFINE_ENUM_FLAG_OPERATORS
宏的使用一致。這可能會對客戶端程式碼產生重大變更影響:
您不能將0
文字作為標誌值傳遞。相反,您必須使用適當的預設枚舉值: CP_FLAGS_NONE
、 DDS_FLAGS_NONE
、 WIC_FLAGS_NONE
、 TEX_FR_ROTATE0
、 TEX_FILTER_DEFAULT
、 TEX_FILTER_DEFAULT
、 TEX_FILTER_DEFAULT 、 TEX_FILTER_DEFAULT
、 CNMAP_DEFAULT
、 CNMAP_DEFAULT
如果使用位元遮罩操作在本機建置標誌值,請使用枚舉類型而不是DWORD
。例如, DDS_FLAGS flags = DDS_FLAGS_NONE; if (...) flags |= DDS_FLAGS_EXPAND_LUMINANCE;
如果某些標誌重疊,您可以使用|
組合相關類型: TEX_FILTER_FLAGS
過濾器模式與WIC_FLAGS
組合, TEX_FILTER_FLAGS
sRGB 標誌與TEX_PMALPHA_FLAGS
或TEX_COMPRESS_FLAGS
組合。沒有定義其他位元運算子。例如, WIC_FLAGS wicFlags = WIC_FLAGS_NONE | TEX_FILTER_CUBIC;
除非系統安裝了第 3 方 WIC 編解碼器,否則 WICTextureLoader 無法載入.TGA
或.HDR
檔案。您必須使用 DirectXTex 程式庫來支援 TGA/HDR 檔案格式,而不依賴附加 WIC 編解碼器。
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) 行結尾,則可能無法建立所有所需的著色器。
截至 2024 年 10 月版本,命令列工具也支援使用--
GNU 風格長選項。所有現有開關都繼續起作用,但根據此表,現在不建議使用某些-
選項:
特克斯彙編 | 特克斯康夫 | 文字診斷 | |||
---|---|---|---|---|---|
-色調映射 | --色調圖 | -壞尾巴 | --壞尾巴 | -壞尾巴 | --壞尾巴 |
-背景顏色 | --gif-背景顏色 | -修復bc4x4 | --修復-bc-4x4 | -忽略mips | --忽略 mips |
-調配 | --調配 | -忽略mips | --忽略 mips | - 寬容的 | --寬容的 |
-stripmips | --strip-mips | -反轉 | --反轉-y | -目標x | --目標-x |
-保持覆蓋範圍 | --保持覆蓋範圍 | ||||
- 寬容的 | --寬容的 | ||||
-重建z | --重建-z | ||||
-旋轉顏色 | --旋轉顏色 | ||||
-singleproc | --單一進程 | ||||
-調配 | --調配 | ||||
-tgazeroalpha | --tga-零-阿爾法 | ||||
-定時 | - 定時 | ||||
-色調映射 | --色調圖 | ||||
- 無線無損 | --wic-無損 | ||||
-wicmulti | --wic-多幀 | ||||
-x2偏差 | --x2-偏差 |
如有問題,請考慮使用帶有directxtk標籤的 Stack Overflow,或dx12-developers或dx9-dx11-developers頻道中的 DirectX Discord Server。
對於錯誤回報和功能請求,請使用此專案的 GitHub 問題。
該項目歡迎貢獻和建議。大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA 機器人將自動確定您是否需要提供 CLA 並適當地修飾 PR(例如,狀態檢查、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
新功能的測試也應作為 PR 提交到測試套件存儲庫。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。
DirectXTex 庫是 Chuck Walbourn 的成果,並得到了 Matt Lee、Xin Huang、Craig Peeper 以及多年來開發 D3DX 實用程式庫的眾多其他 Microsoft 工程師的貢獻。
感謝 Paul Penson 在實施MemoryStreamOnBlob
方面提供的協助。
感謝 Andrew Farrier 和 Scott Matloff 在程式碼審查方面持續提供的幫助。
感謝 Park DongHa 對 JPEG/PNG 輔助功能的貢獻。