调整绑定到Direct2D渲染目标的DXGI交换链的大小

6
我有一个使用ID2D1Factory::CreateDxgiSurfaceRenderTarget创建的Direct2D渲染目标。当我收到WM_SIZE消息时,我尝试通过调用IDXGISwapChain::ResizeBuffers来调整相应的交换链大小,但它失败并返回DXGI_ERROR_INVALID_CALL(0x887a0001)。我认为这是由于ResizeBuffers文档中所述的以下原因:

您无法调整交换链大小,除非释放其后备缓冲区的所有未完成引用。必须释放所有直接和间接引用后备缓冲区,以便ResizeBuffers成功。

应用程序在对资源调用AddRef后持有直接引用。

视图对资源的间接引用,将资源的视图绑定到设备上下文、使用该资源的命令列表、使用该资源的视图的命令列表、执行使用该资源的另一个命令列表的命令列表等。

我认为,由ID2D1RenderTarget::CreateDxgiSurfaceRenderTarget创建的Direct2D渲染目标就是其中一种间接引用。但我无法想象每次调整窗口大小都要重新创建渲染目标,那么我应该怎么做呢?

1个回答

2

好的,显然每次窗口大小改变时都需要重新创建渲染目标,详细解释可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接