DirectX SDK 在哪里?

从 Windows 8 开始,DirectX SDK 作为 Windows SDK 的一部分包含在内。

我们最初创建了 DirectX SDK 作为基于 Windows 进行游戏开发的高性能平台。 随着 DirectX 技术的成熟,它们变得与更广泛的应用程序相关。 如今,计算机中 Direct3D 硬件的可用性甚至促使传统桌面应用程序使用图形硬件加速。 同时,DirectX 技术与 Windows 集成度更高。 DirectX 现在是 Windows 的基本组成部分。

由于 Windows SDK 是适用于 Windows 的主要开发人员 SDK,因此 DirectX 现在包含在其中。 现在可以使用 Windows SDK 为 Windows 生成出色的游戏。 若要下载 Windows 11 SDK、Windows 10 SDK 或 Windows 8.x SDK,请参阅 Windows SDK 和模拟器存档

以下技术和工具(以前是 DirectX SDK 的一部分)现在是 Windows SDK 的一部分。

技术或工具 说明
Windows 图形组件
Direct3D 和其他 Windows 图形 API(如 Direct2D)的标头和库在 Windows SDK 中可用。
注意:已弃用的 D3DX9/D3DX10/D3DX11 实用工具库可通过 NuGet 获取,但也有许多开放源代码替代项。 Windows SDK 中提供了 D3DCSX DirectCompute 实用工具库和可再发行 DLL。 GitHub 上提供了 D3DX12。
HLSL 编译器 (FXC.EXE)
HLSL 编译器是 Windows SDK 中 bin 文件夹下的相应体系结构子目录中的工具。
注意: D3DCompiler API 和可再发行 DLL 在 Windows SDK 中可用。
对于 DirectX 12 开发,请使用 Windows SDK 中托管在 GitHub 上的 DXCompiler。
PIX for Windows
PIX for Windows 工具的替代现在是 Microsoft Visual Studio 中的一项功能,称为 Visual Studio 图形调试器。 此功能极大地提高了可用性,支持 Windows 8 和 Direct3D 11.1,并与传统的 Microsoft Visual Studio 功能(如调用堆栈和用于 HLSL 调试的调试窗口)集成。 有关此新功能的详细信息,请参阅 调试 DirectX 图形

有关 DirectX 12 开发,请参阅 Windows 上的最新一代 PIX
XAudio2 for Windows
XAudio2 API 现在是 Windows 11、Windows 10 和 Windows 8.x 中的系统组件。 Windows SDK 中提供了 XAudio2 的标头和库。 有关 Windows 7 支持,请参阅 XAudio2Redist
适用于 Windows 的 XInput
XInput 1.4 API 现在是 Windows 11、Windows 10 和 Windows 8.x 中的系统组件。 Windows SDK 中提供了 XInput 的标头和库。
注意: 旧版 XInput 9.1.0 也作为 Windows 7 或更高版本的一部分提供。
XNAMATH
最新版本的 XNAMATH(针对新指令集以及 ARM/ARM64 进行了更新)现在是 DirectXMath。 DirectXMath 的标头在 Windows SDK 和 GitHub 上提供。
DirectX 控制面板和 DirectX 功能查看器
DirectX 控制面板和 DirectX 功能查看器实用工具包含在 Windows SDK 的 bin 文件夹下的相应体系结构子目录中。 GitHub 上也提供了 DirectX 功能查看器。
XACT
不再支持在 Windows 上使用 Xbox 音频跨平台工具 (XACT) 。
游戏资源管理器 和 GDFMAKER
游戏资源管理器 API 向 Windows 用户呈现游戏。 游戏资源管理器 API 仅在 Windows Vista 和 Windows 7 上受支持。 使用游戏定义文件创建工具 (GDFMAKER.EXE) 声明 Windows 应用商店应用的游戏分级。
游戏定义文件创建工具 (GDFMaker.exe) 包含在 Windows SDK 的 bin 文件夹下的 x86 子目录中,并支持 Windows 应用商店应用和 Win32 桌面应用程序。

其他 DirectX SDK 工具
可以联机找到其他工具,例如 dxtex.exe、meshconvert.exe、texconv.exe 和 uvatlas.exe。 有关这些工具的详细信息,请参阅 DirectX SDK 工具目录
示例
可以在 DirectX 示例存储库中找到突出显示 Windows 上的 DirectX 12 技术的示例应用程序。 旧版 Direct3D 的大多数示例也联机提供。 有关这些示例的详细信息,请参阅 DirectX SDK 示例目录
托管 DirectX 1.1
.NET DirectX 程序集已弃用,不建议由新应用程序使用。 有许多替代方法可用。 请参阅 DirectX 和 .NET

 

如果需要,可以从 Microsoft 下载中心 下载旧版 DirectX SDK,但不建议将 用于新项目。

注意

如果已安装特定版本的 Visual C++ 2010 可再发行程序包,则无法安装 DirectX SDK。 有关此问题的详细信息和解决方法,请参阅 在 2010 年 6 月 () 安装 DirectX SDK 时出现“S1023”错误

 

通过 Visual Studio 使用 DirectX SDK 项目

2010 年 6 月 DirectX SDK 中的示例受高级 Visual Studio SKU (Microsoft Visual Studio Professional 2012、Microsoft Visual Studio Ultimate 2012 Microsoft Visual Studio ProfessionalWindows 7 和 Windows 8 及更高版本上的 2013 或 Microsoft Visual Studio Ultimate 2013) 。 由于将 DirectX 标头和库转换为 Windows SDK,因此需要更改项目设置才能正确生成这些示例,以及 Windows 8 SDK 及更高版本与高级 Visual Studio SKU 一起打包的方式。

这些步骤也适用于依赖于 DirectX SDK 的你自己的项目。

  1. 确保在开发计算机上安装 2010 年 6 月版的 DirectX SDK。 如果安装到运行 Windows 8 及更高版本的计算机上,系统将提示并要求启用 .NET 3.5 作为 DirectX SDK 的必备安装。

    注意

    如果已安装特定版本的 Visual C++ 2010 可再发行程序包,则无法安装 DirectX SDK。 有关此问题的详细信息和解决方法,请参阅 在 2010 年 6 月 () 安装 DirectX SDK 时出现“S1023”错误

     

  2. 请确保使用的是其中一个高级 Visual Studio SKU。 Microsoft Visual Studio Express 2012 for Windows 8 或 Microsoft Visual Studio Express 2013 for Windows 不会生成 Windows 8 及更高版本的桌面应用程序,例如 DirectX SDK 示例。 若要安装其中一个高级 Visual Studio SKU,请转到: Visual Studio 下载 并按照说明进行操作。

  3. 使用 DirectX SDK 示例浏览器安装所需示例的项目文件。 打开示例的 Microsoft Visual Studio 2010 兼容解决方案文件, (后缀为 _2010) 。

  4. 如果在仅安装了 Microsoft Visual Studio 2012 或 Microsoft Visual Studio 2013的系统上打开示例,将收到以下消息:“此解决方案包含一个或多个使用早期版本的 VC++ 编译器和库的项目。 每个项目都可以更新为使用 VC++ 编译器和库 (v110) ”。在此对话框中选择“ 更新 ”选项以在打开项目之前进行更新。

    否则,可以更新到 Visual Studio 2012 或Visual Studio 2013 C++ 11 编译器和库加载后,右键单击解决方案并选择“更新 VC++ 项目”。

  5. D3DX 不被视为在 Windows 8 及更高版本中使用 Direct3D 的规范 API,因此未包含在相应的 Windows SDK 中。 调查使用 Direct3D API 的备用解决方案。 对于旧项目(例如 Windows 7 (及早期) DirectX SDK 示例),需要使用 DirectX SDK 生成具有 D3DX 的应用程序:

    1. 按如下所示修改项目的 VC++ 目录,以便对 SDK 标头和库使用正确的顺序。

      i. 打开项目的“属性”,然后选择“VC++ 目录”页。 ii. 选择“所有配置和所有平台”。 iii. 按如下所示设置这些目录:
      • 可执行目录: <继承自父级或项目默认值> (右侧下拉列表)
      • 包含目录: $ (IncludePath) ;$ (DXSDK_DIR) Include
      • 包含库目录: $ (LibraryPath) ;$ (DXSDK_DIR) Lib\x86

      iv. 单击“应用”。
      v. 选择 x64 平台
      vi. 按如下所示设置 库目录

      • 库目录: $ (LibraryPath) ;$ (DXSDK_DIR) Lib\x64
    2. 无论“d3dx9.h”在哪里, 项目中包括“d3dx10.h”或“d3dx11.h”,请务必先显式包含“d3d9.h”、“d3d10.h”和“dxgi.h”或“d3d11.h”和“dxgi.h”,以确保你使用的是较新版本。 如果需要,可以禁用 警告 C4005 ;但是,此警告指示你使用的是这些标头的旧版本。

    3. 删除项目中对 DXGIType.h 的所有引用。 此标头在 Windows SDK 中不存在,DirectX SDK 版本与新的 winerror.h 冲突。

    4. 所有 D3DX DLL 都通过 DirectX SDK 安装安装到开发计算机上。 如果所需的 D3DX 依赖项移动到另一台计算机,请确保随任何示例或应用程序一起重新分发。

    5. 请注意,当前使用 D3DX11 的替换技术包括 DirectXTexDirectXTKDirectXMeshUVAtlas。 D3DXMath 由 DirectXMath 替换。

  6. 通过观察以下条件,确保使用的是新版本的 HLSL 着色器编译器:

    1. 根据步骤 5 更改可执行目录将导致项目生成使用 Windows SDK 安装中的 FXC。 请注意,HLSL 文件现已由 Visual Studio 正式识别。 可以将它们添加为项目文件,并通过项目系统设置编译器选项。

    2. 通过旧版 D3DX DLL 调用运行时编译将使用错误的旧版 HLSL 编译器。 将代码中对 D3DXCompile*、D3DX10Compile*和 D3DX11Compile* API 的所有引用替换为 D3DCOMPILER_46.DLL 或 D3DCOMPILER_47.DLL 中的 D3DCompile 函数。

    3. 任何使用运行时着色器编译的项目都必须 D3DCOMPILER_xx.DLL 复制到项目的本地可执行路径。 此 DLL 在 %ProgramFiles (x86) %\Windows Kits\8.0\Redist\D3D\<arch>%ProgramFiles (x86) %\Windows Kits\8.1\Redist\D3D\<arch> 下的 Windows SDK 安装子目录中可用,其中 <arch>x86x64

      Windows SDK 中的 D3DCOMPILER_46.DLL 或 D3DCOMPILER_47.DLL 不是系统组件,不应复制到 Windows 系统目录。 可以使用应用程序作为并行 DLL 将此 DLL 重新分发到其他计算机。

  7. 任何使用 XInput API 且打算在 Windows 7 或更早版本的 Windows 上运行的项目都需要使用旧版 (9.1.0) ,或者需要显式包含 DirectX SDK 中此组件的标头和库。 XInput 标头和 XINPUT。Windows SDK 中包含的 LIB 仅面向作为 Windows 8 及更高版本一部分提供的 1.4 (1.4) 。 同一标头可用于 XINPUT9_1_0.LIB,以使用旧版 Windows 附带的旧版本。 旧版 XInput 不会检测完整功能或不支持控制器集成音频,因此,如果需要对这些功能的支持,则必须使用 DirectX SDK 版本 (1.3) 。

    若要使用功能齐全的下层 XInput API,应 #include 直接从 DirectX SDK 获取特定的 XInput 标头:

    #include <%DXSDK_DIR%Include\xinput.h>

    ...在“其他依赖项”的链接器选项中,直接链接到 DirectX SDK XInput 库:

    %DXSDK_DIR%Include\<arch>\xinput.lib

    XINPUT1_3.DLL 二进制文件通过开发计算机上的 DirectX SDK 安装安装到 Windows 系统目录。 你需要使用 DirectX SDK 中的 DirectX 安装程序安装将此二进制文件与应用程序一起重新分发。

  8. 任何使用 XAudio2 API 且打算在 Windows 7 或更早版本的 Windows 上运行的项目都需要使用较旧版本 (9.1.0) 或显式包含 DirectX SDK 中此组件的标头和库。 Windows SDK 附带的 XAudio2 标头和库仅针对 Windows 8 中包含的版本 (2.8) 。

    例如,使用 XAudio2 时,应 #include 直接从 DirectX SDK 获取特定的 XAudio2 标头:

    #include <%DXSDK_DIR%Include\xaudio2.h>

    ...在“其他依赖项”的链接器选项中,直接链接到 DirectX SDK XAudio2 库:

    %DXSDK_DIR%Include\<arch>\xaudio2.lib

    XAUDIO2_7.DLL 二进制文件通过开发计算机上的 DirectX SDK 安装安装到 Windows 系统目录。 需要使用 DirectX SDK 中的 DirectX 安装程序安装,通过应用程序重新分发这些库。

  9. 如果已将 DirectX SDK 与过去版本的 Visual Studio 配合使用,则 Visual Studio 2010 升级可能已将 DirectX SDK 路径迁移到默认项目设置。 建议删除这些设置,以防止将来出现生成错误。 在 %USERPROFILE%\AppData\Local\Microsoft\MSBuild\v4.0 目录中,修改 Microsoft.Cpp.Win32.userMicrosoft.Cpp.x64.user 文件以删除对DXSDK_DIR路径的所有引用。 或者,可以删除包含 Path 条目(如 ExecutablePath 和 <IncludePath>>)<的整个 <PropertyGroup> 节点,以还原为标准默认值。 如果未在这些文件中看到对DXSDK_DIR的引用,则无需进行更改。

  10. 如果生成的应用支持具有 Service Pack 2 的 Windows Vista (SP2) 以及 Windows 7 和 Windows 8 及更高版本,请将名为 _WIN32_WINNT 的预处理器定义设置为0x600。 如果它仅支持 Windows 7 和 Windows 8 及更高版本,请将其设置为 0x601。

    例如:

    1. 打开项目的 “属性” ,然后选择“ C/C++>预处理器”。
    2. 选择“ 所有配置 ”和“ 所有平台”。
    3. 转到 “预处理器定义 ”部分并设置_WIN32_WINNT=0x600。
    4. 单击“应用”。

Windows 游戏和 DirectX SDK

DirectX SDK (2021 Edition) 在哪里?

特定年龄的 DirectX SDK

没有 D3DX 的生活