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++ 代码。适用于 Windows 11 和 Windows 10 的桌面应用程序。
此代码旨在使用 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 在代码审查方面持续提供的帮助。