d3dx12.h 给出了一堆错误

d3dx12.h gives a bunch of errors

我正在尝试学习 DirectX 12,我发现了 these tutorials on github。我下载了所有内容并尝试 运行 HelloWindow 项目。我在 Debug->Options->Linker->Input 中链接了 d3d12.lib。不幸的是,它给了我一堆来自 d3dx12.h 的错误。对于其中的大多数,Intellisense 会说要包含 d3d12.h,即使我已经这样做了。例如,D3D12_RESOURCE_DESC1 是未定义的,他的所有属性也是如此。如果是,我是否遗漏了什么请帮助我。

您正在使用 D3DX12.H 的 'latest' 副本,这需要您使用 Windows 10 SDK (19041) 的 'latest' 版本。如果 D3D12_RESOURCE_DESC1 未定义,则您使用的是较旧的 Windows 10 SDK。

请注意,可以通过三种不同的方式解决此不匹配问题:

  1. 安装最新的 Windows 10 SDK (19041)。对于 VS 2019,这是通过 运行ning Visual Studio 安装程序并选择新的 Windows 10 SDK 作为组件来完成的。对于 VS 2017,您需要 运行 standalone installer。不支持 VS 2015 及更早版本。

  2. 使用支持旧版 SDK 的 D3DX12.H 实用程序 header 版本。我维护 'latest' D3DX12.H header 的一个版本,其中包含一堆预处理器条件,以便它支持 Windows 10 SDK (14393) 或更高版本。这恰好是支持 VS 2015 的 Windows 10 SDK 的最新版本。从 GitHub: directx-vs-templates.

    获取它
  3. 使用GitHub DirectX-Headers:一个新的选项是获取最新的header包括D3DX12.H 作为来自 GitHub 的集合。 link 库仍然需要 Windows 10 SDK。

请参阅 this blog post 了解为什么 D3DX12.H 不是 Windows 10 SDK 的一部分的详细信息。

The samples on DirectX-Graphics-Samples in the main/master branch assume you are using the latest Windows 10 SDK (19041).

As you are new to DirectX 12, you may want to take a look at DirectX Tool Kit for DX12 as a more gentle introduction to the latest version of the API.