Я перемещаю свой рендерер в другой поток. Во время этого процесса я делаю два вызова IDirect3D9 :: CreateDevice: 1. из «потока рендеринга» - для создания устройства рендеринга и его правильного изменения 2. из «основного потока» - здесь я ' m создание Null-устройства для компиляции шейдеров и т. д.многопоточный IDirect3DDevice9 :: CreateDevice freeze
Эти вызовы, конечно, могут перекрываться (выполняться одновременно), поэтому я синхронизую их с CriticalSection.
Проблема в том, что один из этих вызовов когда-либо замерзает. DirectX не бросает никаких предупреждений до того, как это происходит, поэтому я подозреваю, что существует внутренний тупик.
Я изучил документацию и упомянул, что все вызовы, которые работают на одном устройстве, особенно IDirect3D9 :: CreateDevice, IDirect3DDevice9 :: TestCooperativeLevel и IDirect3DDevice9 :: Reset, должны быть вызваны из того же потока, но у меня есть покрыты.
Так что мне не хватает? Может кто-нибудь, пожалуйста, скажите мне?
Спасибо, Паксаса