简短的回答是,作为 Windows 8 SDK(大约 2011 年)开发工作的一部分,“DirectX SDK”已迁移到 Windows SDK。DirectX 库、头文件和工具被移到 Windows SDK 中,并且“DirectX SDK”被宣布弃用(即 DirectX SDK 2010 年 6 月版本是最后一个版本)。
Microsoft 将 Windows 8 的示例移到了网上,因此 DirectX SDK 中的大多数示例都被放弃了,转而使用Windows Store/UWP示例。作为一个个人项目,我已经在GitHub 上更新了一堆 Direct3D 11 示例,因此它们只使用 Windows SDK。
如Microsoft Docs页面所述,在此迁移中遗留了许多技术。
Direct3D 9 开发被认为是遗留的,仍然使用它的主要原因是 Windows XP 支持。Windows 8 SDK 不支持 Windows XP 开发--Visual Studio 2012-2017 支持使用 Windows 7.1A SDK 进行 Windows XP 开发。如果您想以 Direct3D 9 为目标,则基本上只能使用旧版 DirectX SDK——尽管有些引擎有足够的自己的帮助代码,它们并不真正需要 D3DX9。
Direct3D 10 开发被认为是遗留的。Direct3D 11 是 Direct3D 10 的严格超集,受相同版本的 Windows 支持,并且功能级别机制意味着 Direct3D 11 可以在比 Direct3D 10更多的硬件上工作。因此,D3DX10
不推荐使用帮助程序库。
XACT 库未结转。它主要是为 Xbox 360 创建的,因此已被弃用。
托管 DirectX 1.1 已被弃用多年(~2005 年)
请参阅僵尸 DirectX SDK和DirectX SDK在哪里?
至于您应该使用什么,我创建了许多库来替换 D3DX9/D3DX10/D3DX11 中的内容。看看没有 D3DX 的生活
对于 DirectX 12 开发,旧版 DirectX SDK从不支持它。示例在GitHub 上,否则您应该只使用 Windows 10 SDK。我在GitHub 上也有适用于 DirectX 12的DirectX Tool Kit版本。也就是说,如果您是 DirectX 新手,您应该真正考虑从DirectX 11开始。
有这样的东西,但它与旧图书馆D3DX12
不太一样。有用于加载纹理、进行 BC 压缩等的代码,并且需要 header 和 runtime 。将其与您的游戏一起发布的唯一方法是使用旧版DirectX 设置。D3DX11
D3DX11
DLL
DLL
D3DX12
只是一些辅助函数的标题。没有 DLL 也没有 REDIST。当您创建 DirectX 12 Visual Studio 模板时,它通常会被复制到项目中,您可以从GitHub下载它。
DirectX Tool Kit for DX11和DX12、DirectXTex、DirectXMesh、DirectXMath和UVAtlas提供了很多功能D3DX9
,但同时支持 DirectX 11D3DX10
和D3DX11
DirectX 12。它们都是开源的,因此没有 DLL 或 REDIST:您只需构建它从源头自己。它们不是“插入式”替代品,但它们以更现代的 C++ 形式提供相同的功能。它们支持为经典“Win32”开发、通用 Windows 平台 (UWP) 应用程序或 Xbox One 编写的任何 C++ 程序。
实际上,这是过去十年我在博客中讨论的主要话题。如果您想了解有关正在发生的事情的更多信息,那里有很多详细信息。
更新:虽然仍然建议使用 D3DX9/D3DX10/D3DX11 的开源替代品,并且 Direct3D 11 或 Direct3D 12 易于采用,但当然有很多现有的教程和代码库使用 D3DX。为了支持这些场景,避免尝试将旧版 DirectX SDK 与现代 Windows SDK 结合使用,您可以使用Microsoft.DXSDK.D3DX NuGet包。使用这个包,我能够将所有 Direct3D 9 和 Direct3D 10 旧版 DirectX SDK 示例重新发布到GitHub。