我正在尝试创建一个多线程程序,其中所有渲染都在主线程上完成,而消息处理(和窗口创建)在辅助线程上完成。初始化函数放在主线程上时,初始化函数中的以下代码行SwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)&back_buffer);
会产生访问冲突错误(0xc0000005)。
如果不在辅助线程上放置初始化函数,如何修复此错误?
编辑:我已发布所有相关代码here。
答案 0 :(得分:0)
在Application.cpp的第49行,while (HWindow != nullptr);
正在等待HWindow
成为 nullptr
。但是HWindow初始化为nullptr
,因此while循环将跳过并尝试初始化尚未创建的窗口。
该行现在显示为while (HWindow == nullptr);
。这意味着循环运行直到窗口创建,从而阻止了不存在的窗口的初始化。