ОШИБКА DXGI: IDXGISwapChain::ResizeBuffers: Невозможно изменить размер Swapchain, пока не будут освобождены все ожидающие ссылки на буфер
Я изменил размер буфера при создании нового окна для рендеринга. Я подписался на этот пост и этот пост для изменения размера буферов. Но следующая ошибка продолжает появляться. Кто-нибудь сталкивался с этой ошибкой? Мне нужно точно знать, где мне искать, чтобы это исправить.
/* 1. Clear render targets from device context */
// Clear the previous window size specific context.
ID3D11RenderTargetView* nullViews[] = { nullptr };
m_context->OMSetRenderTargets(_countof(nullViews), nullViews, nullptr);
/* 2. Release Rendering Target */
m_renderTargetView = nullptr;
m_depthStencilView = nullptr;
m_context->Flush();
// If the swap chain already exists, resize it.
if (m_swapChain != nullptr)
{
/* 3. Resize buffer */
HRESULT hr = m_swapChain->ResizeBuffers(
m_bufferCount,
static_cast<UINT>(m_renderTargetSize.width),
static_cast<UINT>(m_renderTargetSize.height),
DXGI_FORMAT_B8G8R8A8_UNORM,
m_gdiCompatible ? DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE : 0
);
if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
{
// If the device was removed for any reason, a new device and swap chain will need to be created.
CreateSwapChain(m_device);
}
else
{
THROW_PE(hr);
}
}
else // Otherwise, create a new one.
{
CreateSwapChain(m_device);
}
/* 4. Reset the buffer as target view */
IDXGISurfacePtr dxgiBackBufferSurface;
IF_FAILED_THROW_HR(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&dxgiBackBufferSurface)));
m_d2dRenderer->CreateRenderTargetResources(dxgiBackBufferSurface);
/* 5. Set the new render target*/
m_context->OMSetRenderTargets(1, &m_renderTargetView.GetInterfacePtr(), m_depthStencilView);
/* 6. Reset view port */
UpdateViewport(D2D1::RectF(0.0f, 0.0f, m_renderTargetSize.width, m_renderTargetSize.height));
ОШИБКА DXGI: IDXGISwapChain::ResizeBuffers: Нельзя изменить размер Swapchain, пока не будут освобождены все ожидающие ссылки на буфер. [РАЗНАЯ ОШИБКА № 19: ]