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