版权所有 (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 在代码审查方面持续提供的帮助。