微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Direct3D11-在CreateSwapChainForCoreWindow上执行位置xxx的访问冲突

如何解决Direct3D11-在CreateSwapChainForCoreWindow上执行位置xxx的访问冲突

我正在学习C ++和Direct3D11 / Direct2D(在UWP之上)的乐趣,但是正在努力使我的小测试程序运行。当我调用CreateSwapChainForCoreWindow时,它会引发访问冲突(请参见下面的确切异常)。

我将D3D设备用于其他通话,但它们正常工作,所以我认为这不是问题。交换链描述相对简单,交换链本身将在调用中设置。因此,我认为该异常是因为我向窗口传递了错误的指针,但是我无法解决它。

例外:

在UWP D2D示例v3.exe中在0x00007FF8FE44F4E0(Windows.UI.dll)引发异常:0xC0000005:执行位置0x00007FF8FE44F4E0的访问冲突。

代码段(https://github.com/cwebb95/Direct2D_cppwinrt):

        ComPtr<IdxgiSwapChain1> swapChain = nullptr;
        DX::ThrowIfFailed(dxgiFactory->CreateSwapChainForCoreWindow(m_d3dDevice.Get(),reinterpret_cast<IUnkNown*>(&CoreWindow::GetForCurrentThread()),&swapChainDescription,NULL,&swapChain));

解决方法

我能够通过将第二个参数更改为以下内容来解决我的问题:

static_cast<::IUnknown*>(winrt::get_abi(CoreWindow::GetForCurrentThread()))

来自:

reinterpret_cast<IUnknown*>(&CoreWindow::GetForCurrentThread())

我还不了解如何解决此问题,但是我将进行研究并希望找出答案(对该问题的任何线索都将不胜感激)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。