我有一些我想在第二个线程中运行的directx代码。 我读了下面的How do I run with a multithreaded device in Direct3D9 ? ,它说可以使用其他线程的directx设备,只要你没有从多个线程同时使用,我就不这样做了。并且您必须从同一个线程调用CreateDevice和CreateWindow,以及其他一些函数,如TestCooperativeLevel,Reset等
我正在做以下事情:
在主线程中创建窗口和directx设备;
启动第二个线程并在那里进行渲染和更新,基本上是:
此外,我还想从主线程中调用TestCooperativeLevel,Reset,pDevice-> Release和pDirect3D-> Release()。
我在调试模式下测试时代码正常工作。但它并没有处于重新模式,即渲染线程似乎绘制得很好,但我的主线程似乎被阻止并且不处理消息,或者有时可能很慢地处理它们。如果只是评论对Present的调用,一切都很好(当然它不会在屏幕上绘制),即主线程响应,第二个线程也在运行。 Sooo,如果在主线程中创建窗口和设备,从其他线程调用Present时是否存在问题?当我阅读以下Multithreading Issues时,此类限制仅适用于CreateDevice,TestCooperativeLevel和Release。