DirectX 10 IDXGISwapChain :: GetBuffer多线程CTD错误

时间:2017-04-26 02:22:38

标签: c++ multithreading visual-studio directx-10

我正在尝试创建一个多线程程序,其中所有渲染都在主线程上完成,而消息处理(和窗口创建)在辅助线程上完成。初始化函数放在主线程上时,初始化函数中的以下代码行SwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)&back_buffer);会产生访问冲突错误(0xc0000005)。

如果不在辅助线程上放置初始化函数,如何修复此错误?

编辑:我已发布所有相关代码here

1 个答案:

答案 0 :(得分:0)

在Application.cpp的第49行,while (HWindow != nullptr);正在等待HWindow 成为 nullptr。但是HWindow初始化为nullptr,因此while循环将跳过并尝试初始化尚未创建的窗口。

该行现在显示为while (HWindow == nullptr);。这意味着循环运行直到窗口创建,从而阻止了不存在的窗口的初始化。