У меня есть цель рендеринга Direct2D, созданная с помощью ID2D1Factory::CreateDxgiSurfaceRenderTarget. Когда я получаю сообщение WM_SIZE, я пытаюсь изменить размер соответствующей цепочки подкачки, вызывая IDXGISwapChain::ResizeBuffers, но это не удается с ошибкой DXGI_ERROR_INVALID_CALL (0x887a0001). Я считаю, что это из-за следующего, указанного документация ResizeBuffers:
Вы не можете изменить размер цепочки подкачки, пока не освободите все незавершенные ссылки на ее задние буферы. Вы должны освободить все его прямые и косвенные ссылки на обратные буферы для успешного выполнения ResizeBuffers.
Прямые ссылки сохраняются приложением после вызова AddRef для ресурса.
Косвенные ссылки хранятся представлениями на ресурс, привязкой представления ресурса к контексту устройства, списком команд, которые использовали ресурс, списком команд, которые использовали представление этого ресурса, списком команд, которые выполняли другой список команд, который использовал ресурс и так далее.
Я бы предположил, что цель рендеринга Direct2D, созданная ID2D1RenderTarget::CreateDxgiSurfaceRenderTarget, является одной из таких косвенных ссылок. Но я не могу себе представить, что я должен воссоздавать цель рендеринга каждый раз, когда размер окна изменяется, так что же мне делать?