DirectML、Windows Insider Preview 和 DX SDK 崩溃

DirectML, Windows Insider Preview and DX SDK Debacle

所以,我已经安装了 Windows 10.0.18358.1,最新的 Visual Studio(17,目前还没有打扰 19),更新了(Insider)Windows SDK应该包括 DX12 SDK。

而且,我还没有设置 DXSDK_DIR 环境变量。

我可以在 windows 套件文件夹中看到所有 DX 和 D3D headers 和库,但它们的分布并不真正对应于典型的 include/bin/lib 结构。

有关如何更正此问题的建议?我愿意复制任何人的 set 输出 有这个工作。

(DirectML 标记是因为这是我需要的功能,也是所有这些疯狂的根源。)

我建议恢复到以前的版本并在反馈中心标记问题。另外,如果你还没有,运行 chkdsk 在安装前后,以防万一。

DXSDK_DIR 变量仅由旧版 DirectX SDK 和 'beta DirectX 12 SDK' 测试车辆使用,未被作为标准的 Windows 10 SDK 使用 WindowsSDKDir已经包含所需的 headers 和库。

如果您使用 Visual Studio 构建系统进行构建,则无需任何特殊设置即可使用 DirectX 12 headers,因为它们都已在路径中。您的项目可能默认设置为使用 10.0.17763 Windows 10 SDK,因此要使用 Windows 10 Insider SDK,您需要修改项目设置 <WindowsTargetPlatformVersion> 元素参考较新的 10.0.18xxx 版本。

如果您使用更多的手动构建系统,那么您应该使用 Windows 10 SDK side-by-side 结构的包含路径:

%WindowsSdkDir% is typically "C:\Program Files (x86)\Windows Kits\"
%WindowsSDKVersion% is something like "10.0.17763.0\"
%arch% is "arm", "arm64", "x64", or "x86'

INCLUDE=%WindowsSdkDir%include\%WindowsSDKVersion%shared;
    %WindowsSdkDir%include\%WindowsSDKVersion%um; 
    %WindowsSdkDir%include\%WindowsSDKVersion%winrt; 
    %WindowsSdkDir%include\%WindowsSDKVersion%cppwinrt

LIB=%WindowsSdkDir%lib\%WindowsSDKVersion%um\%arch%

Microsoft Docs and this blog post

The Windows 10 SDK does not include utilities which are instead shared source. For D3DX12, you can obtain the latest header from here

You may also want to look at DirectX Tool Kit for DX12, DirectXTex, and DirectXMesh

For historic and usability reasons, DirectXMath is part of the Windows 10 SDK, but you can also get the latest version from GitHub. The recent Windows 10 SDKs also include the HLSL compiler/D3DCompile API including both the older FXC.EXE and the new Shader Model 6 DXC.EXE.

You may also find the Visual Studio templates on directx-vs-templates useful.