0
我正在將我的渲染器移動到另一個線程。 在此過程中,我正在對IDirect3D9 :: CreateDevice進行兩次調用:1.從「渲染線程」 - 爲了創建渲染設備並正確調整其大小 2.從「主線程」 - 在這裏, m創建一個空設備,以便編譯着色器等。多線程IDirect3DDevice9 :: CreateDevice凍結
這些調用當然可以重疊(同時進行),所以我將它們與CriticalSection同步。
問題是,其中一個電話有時會凍結。 DirectX在發生之前不會發出任何警告,所以我懷疑是內部死鎖。
我研究了文檔,並提到所有在單個設備上運行的調用,尤其是IDirect3D9 :: CreateDevice,IDirect3DDevice9 :: TestCooperativeLevel和IDirect3DDevice9 :: Reset,都需要從同一個線程調用 - 但我有覆蓋。
那麼我錯過了什麼?任何人都可以告訴我嗎?
感謝, 帕克薩斯