我有一个用 C# 编写的 Xamarin Forms-app,并使用 DirectX 工具包和互操作调用来C++。
该应用程序是Windows 8.1应用程序,在Windows 8.1上运行良好,并且已在我的Windows 10计算机上运行。
但是有一天,我启动了Visual Studio 2015,并打算在Windows 10上运行该应用程序。它只是从任何地方崩溃。我认为Windows 10更新可能是问题所在?
无论如何,以下是适用于Windows8.1的DirectX工具包中的一些代码:
ThrowIfFailed(
D3D11CreateDevice(
nullptr, // Specify null to use the default adapter.
D3D_DRIVER_TYPE_HARDWARE,
0,
creationFlags, // Optionally set debug and Direct2D compatibility flags.
featureLevels, // List of feature levels this app can support.
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION, // Always set this to D3D11_SDK_VERSION for Windows Store apps.
&device, // Returns the Direct3D device created.
NULL, // Returns feature level of device created.
&context // Returns the device immediate context.
)
);
// Get D3D11.1 device
ThrowIfFailed(
device.As(&m_d3dDevice)
);
D3D11创建设备似乎返回空值(设备和上下文) 并在设备中崩溃。As(&m_d3dDevice) 和错误消息指出某些 SDK 组件可能丢失。
有谁知道问题可能是什么?是否有我必须安装的任何 DirectX SDK?为什么我可以运行该应用程序?
谢谢!
来自 DirectX TK:http://directxtk.codeplex.com/workitem/1317
这是因为你的 creationFlag D3D11_CREATE_DEVICE_DEBUG如果未安装 Direct3D 调试设备(它仅在开发人员计算机上),则会失败。
由于您使用的是 Windows 10,因此您可能已从一个版本升级到另一个版本,这会禁用调试设备,因为它已过时。您需要重新启用它。