我遇到了一个奇怪的问题,我认为D3D11CreateDeviceAndSwapChain
我可以创建设备和交换链,但是当应用程序退出并->destroy
在交换链、设备和设备上下文上被调用时,线程仍在运行。注释掉这一行,应用程序将按预期终止。
featureLevel = D3D_FEATURE_LEVEL_11_0;
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, &featureLevel, 1, D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext);
if(FAILED(result))
{
#ifdef _DEBUG
log(logDEBUG) << "Error at D3D11CreateDeviceAndSwapChain";
#endif
return false;
}
return true;
和破坏:
if(m_swapChain)
{
m_swapChain->SetFullscreenState(false, NULL);
}
if(m_device)
{
m_device->Release();
}
if(m_deviceContext)
{
m_deviceContext->Release();
}
if(m_swapChain)
{
m_swapChain->Release();
}
我相当有信心问题来自于此,但我不是 100% 确定。单步执行代码,我看到每个版本都被正确调用。(如果第一个块被注释掉,应用程序将正确关闭。)
感谢您提供有关此问题的任何见解。