1
我试图创建一个多线程程序,其中所有的渲染是在主线程上完成的,而消息处理(和窗口创建)是在辅助线程上完成的。初始化函数中的以下代码行SwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)&back_buffer);
在初始化函数放置在主线程上时会产生访问冲突错误(0xc0000005)。DirectX 10 IDXGISwapChain :: GetBuffer多线程CTD错误
如何在不将初始化函数放置在辅助线程上的情况下修复此错误?
编辑:我已经发布了所有相关的代码here。
除非您提供[最小,完整和可验证示例](https://stackoverflow.com/help/mcve)或至少初始化部分,否则无法猜测到底发生了什么错误。具有单独渲染线程的方法可以工作(甚至是首选),但应该特别小心处理可能的死锁并防止并发调用DXGI方法。 – VTT
我已经把包含所有相关代码的GitHub存储库的链接。 –
您的代码缺少错误处理。您必须检查所有HRESULT返回值并检查DX调用是否成功。 – VTT