gpt4 book ai didi

c++ - 最小化时 DirectX 崩溃

转载 作者:行者123 更新时间:2023-11-28 07:53:18 25 4
gpt4 key购买 nike

我有一个简单的 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;
}

有人知道为什么后台缓冲区会呕吐吗?

最佳答案

剩下的,你最好在WM_SIZE中单独处理最小化消息(SIZE_MINIMIZED),如果窗口被最小化,停止渲染并将CPU时间让给其他程序。

关于c++ - 最小化时 DirectX 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com