ОШИБКА 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: ]

0 ответов

Другие вопросы по тегам