use*_*015 6 c++ direct3d direct2d dxgi
我有一个使用 ID2D1Factory::CreateDxgiSurfaceRenderTarget 创建的 Direct2D 渲染目标。当我收到 WM_SIZE 消息时,我尝试通过调用 IDXGISwapChain::ResizeBuffers 来调整相应交换链的大小,但失败并显示 DXGI_ERROR_INVALID_CALL (0x887a0001)。我相信这是因为ResizeBuffers 文档中指出的以下内容:
除非释放对其后台缓冲区的所有未完成引用,否则无法调整交换链的大小。为了使 ResizeBuffers 成功,您必须释放其对后台缓冲区的所有直接和间接引用。
在对资源调用 AddRef 后,应用程序将保留直接引用。
间接引用由对资源的视图持有,将资源的视图绑定到设备上下文、使用该资源的命令列表、使用该资源的视图的命令列表、执行使用过的另一个命令列表的命令列表。资源等等。
我假设由 ID2D1RenderTarget::CreateDxgiSurfaceRenderTarget 创建的 Direct2D 渲染目标就是这样一种间接引用。但我无法想象每次调整窗口大小时都应该重新创建渲染目标,那么我该怎么办?
| 归档时间: |
|
| 查看次数: |
2015 次 |
| 最近记录: |