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
、 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 辅助功能的贡献。