我正在开发一个directX 11应用程序。我在创建DX11设备后使用IDXGIFactory2 :: CreateSwapChainForHwnd来创建交换链。 DX11代码位于一个被破坏的对象中,然后重新创建以将另一个视频流渲染到同一个HWND(窗口句柄)。
在第一次运行应用程序IDXGIFactory2 :: CreateSwapChainForHwnd成功没问题。然后应用程序用破坏DX11设备和交换链等的DX11代码销毁对象。它再次使用相同的HWND重新启动DX11代码,这次IDXGIFactory2 :: CreateSwapChainForHwnd FAILS带有E_ACCESSDENIED。
我已阅读MSDN文档,其中说明在更改交换链时存在不同的破坏问题。在这里:
我尝试实施建议的解决方法来强制销毁对象:
D3D11Context->ClearState();
D3D11Context->Flush();
但是IDXGIFactory2 :: CreateSwapChainForHwnd仍然返回E_ACCESSDENIED。
有没有人知道为什么会发生这种情况?谢谢!