我有一个使用ID2D1Factory::CreateDxgiSurfaceRenderTarget创建的Direct2D渲染目标。当我收到WM_SIZE消息时,我尝试通过调用IDXGISwapChain::ResizeBuffers来调整相应的交换链大小,但它失败并返回DXGI_ERROR_INVALID_CALL(0x887a0001)。我认为这是由于ResizeBuffers文档中所述的以下原因:
您无法调整交换链大小,除非释放其后备缓冲区的所有未完成引用。必须释放所有直接和间接引用后备缓冲区,以便ResizeBuffers成功。
应用程序在对资源调用AddRef后持有直接引用。
视图对资源的间接引用,将资源的视图绑定到设备上下文、使用该资源的命令列表、使用该资源的视图的命令列表、执行使用该资源的另一个命令列表的命令列表等。
我认为,由ID2D1RenderTarget::CreateDxgiSurfaceRenderTarget创建的Direct2D渲染目标就是其中一种间接引用。但我无法想象每次调整窗口大小都要重新创建渲染目标,那么我应该怎么做呢?