Uwp 如何使用ID3D11Device5正确创建渲染目标

Uwp 如何使用ID3D11Device5正确创建渲染目标,uwp,directx,direct3d,c++-cx,Uwp,Directx,Direct3d,C++ Cx,使用ID3D11Device5创建渲染目标视图的正确方法是什么?我有一些代码可以与ID3D11Device4一起使用,但是在调用CreateRenderTargetView时升级它失败,导致访问冲突。此崩溃似乎发生在Intel graphics和AMD graphics PC上的图形驱动程序中 我能够重现该问题的一个快速方法是: 在Visual Studio 2017中创建新的“DirectX 11和XAML应用程序(通用Windows)” 在pch.h中,将d3d11_3.hinclude更改

使用ID3D11Device5创建渲染目标视图的正确方法是什么?我有一些代码可以与ID3D11Device4一起使用,但是在调用
CreateRenderTargetView
时升级它失败,导致访问冲突。此崩溃似乎发生在Intel graphics和AMD graphics PC上的图形驱动程序中

我能够重现该问题的一个快速方法是:

  • 在Visual Studio 2017中创建新的“DirectX 11和XAML应用程序(通用Windows)”
  • pch.h
    中,将
    d3d11_3.h
    include更改为
    d3d11_4.h
  • DeviceResources.h
    中,将
    m_d3dDevice
    的类型从
    Microsoft::WRL::ComPtr
    更改为
    Microsoft::WRL::ComPtr
  • 运行调试构建,以便通过
    D3D11\u CREATE\u DEVICE\u debug
    标志使用调试层。崩溃似乎不会发生在发布版本中
  • 这组更改是否存在根本不正确的地方,或者这是一个bug


    编辑:同样的行为似乎也发生在同等的桌面Windows应用程序以及硬件设备上。在参考设备上,
    E_INVALIDARG
    CreateRenderTarget1

    返回,我将首先在控制台应用程序中测试代码,以检查拒绝访问错误是否与UWP沙箱相关。@MehrzadChehraz感谢您的建议。我刚刚试过,在一个标准的桌面应用程序中也会发生这种情况。我从零开始开发一个标准的桌面应用程序时也遇到了同样的错误。CreateRenderTargetView1在使用ID3D11Device5进行调试时崩溃,但在ID3D11Device4中不会崩溃,在发布时也不会崩溃。我会先在控制台应用程序中测试代码,以检查拒绝访问错误是否与UWP沙盒相关。@MehrzadChehraz感谢您的建议。我刚刚试过,在一个标准的桌面应用程序中也会发生这种情况。我从零开始开发一个标准的桌面应用程序时也遇到了同样的错误。使用ID3D11Device5时,CreateRenderTargetView1在调试时崩溃,但使用ID3D11Device4时不会崩溃,在发布时也不会崩溃。