レンダラーを別のスレッドに移動しています。このプロセス中に、IDirect3D9::CreateDevice を 2 回呼び出しています。 1. 「レンダリング スレッド」から - レンダリング デバイスを作成し、適切にサイズ変更するためシェーダーなどをコンパイルするためのヌル デバイス。
もちろん、これらの呼び出しは重複する (同時に行われる) 可能性があるため、CriticalSection と同期しています。
問題は、これらの呼び出しの 1 つが時々フリーズすることです。DirectX はそれが発生する前に警告をスローしないため、内部デッドロックが疑われます。
ドキュメントを調べたところ、単一のデバイスで動作するすべての呼び出し、特に IDirect3D9::CreateDevice、IDirect3DDevice9::TestCooperativeLevel、および IDirect3DDevice9::Reset は、同じスレッドから呼び出す必要があることがわかりましたが、それについて説明しました。
それで、私は何が欠けていますか?誰か教えてください。
ありがとう、パクサス