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

DirectX 10 IDXGISwapChain::GetBuffer Multithread CTD Error

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

如何在不将初始化函数放在辅助线程上的情况下修复此错误?

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

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

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