DirectX 11 CreateSwapChainForHwnd 失败并出现 E_ACCESSDENIED

bre*_*0de 5 directx graphics directx-11

我正在开发 directX 11 应用程序。我在创建 DX11 设备后使用 IDXGIFactory2::CreateSwapChainForHwnd 创建交换链。DX11 代码位于一个对象中,该对象被销毁然后重新创建以将另一个视频流渲染到相同的 HWND(窗口句柄)。

首次运行应用程序 IDXGIFactory2::CreateSwapChainForHwnd 成功,没有问题。然后应用程序使用 DX11 代码销毁该对象,从而销毁 DX11 设备和交换链等。它会使用相同的 HWND 再次重新初始化 DX11 代码,这次 IDXGIFactory2::CreateSwapChainForHwnd 因 E_ACCESSDENIED 失败。

我读过 MSDN 文档,说更改交换链时存在不同破坏的问题。这里:

http://msdn.microsoft.com/en-us/library/windows/desktop/ff476425(v=vs.85).aspx#Defer_Issues_with_Flip

我尝试实施建议的解决方法来强制销毁对象:

D3D11Context->ClearState();
D3D11Context->Flush();
Run Code Online (Sandbox Code Playgroud)

但 IDXGIFactory2::CreateSwapChainForHwnd 仍然返回 E_ACCESSDENIED。

有谁知道为什么会发生这种情况?谢谢!