Win8 应用在 Win10 上崩溃 (D3D11CreateDevice 返回空值)



我有一个用 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,因此您可能已从一个版本升级到另一个版本,这会禁用调试设备,因为它已过时。您需要重新启用它。

相关内容

  • 没有找到相关文章

最新更新