DirectX Crash On Минимизировать

У меня есть простая программа DirectX, которая падает, когда я сворачиваю & затем сверните.

Вот случаи, которые я освещаю:

case WM_SIZING:
case WM_SIZE:
if(engine.isReady()) engine.resizeDevice();
if(engine.isReady()) engine.draw();
break;

Размер примерно:

deviceContext->OMSetRenderTargets(0, NULL, NULL);
...
deviceInterface->CreateRenderTargetView( ... );
...
deviceContext->RSSetViewports(1, &vp);
...
deviceContext->OMSetRenderTargets(1, &renderTargetInterface, NULL);

Когда я минимизирую, код умирает при попытке установить обратный буфер. Это строка с переданными значениями:
hr = swapChain-> ResizeBuffers (3, 640, 480, DXGI_FORMAT_UNKNOWN, 0);
ResizeBuffers () возвращает ошибку 0x887a0005

Код заднего буфера:

HRESULT _setBackBuffer(const SettingsVD &settings){
HRESULT hr;

hr=swapChain->ResizeBuffers(settings.bufferCount, settings.width, settings.height, DXGI_FORMAT_UNKNOWN, 0);
if(FAILED(hr)) return hr; // Dies here when UNminimizing

ID3D11Texture2D* backBuffer=NULL;
hr=swapChain->GetBuffer(0, __uuidof(backBuffer), (LPVOID*)&backBuffer);
if(FAILED(hr)) return hr;

hr=deviceInterface->CreateRenderTargetView(backBuffer, NULL, &renderTargetInterface);
if(FAILED(hr)) return hr;

release(backBuffer);

return hr;
}

Кто-нибудь знает, почему задний буфер работает?

0

Решение

Просто остаток, вам лучше обработать сообщение минимизации (SIZE_MINIMIZED) отдельно в WM_SIZE, если окна были свернуты, остановите рендеринг и предоставьте время ЦП другим программам.

1

Другие решения

Других решений пока нет …