Direct3D 9创建和发布线程?

时间:2011-01-13 16:08:42

标签: directx direct3d9

我有一个使用Direct3D渲染视口的应用程序,它是作为一个单独的DLL模块从主应用程序制作的,它在运行时链接到它。主要应用程序是C#程序。

Direct3D设备及其资源的创建和初始化在本机DLL端完成。主C#程序只从这个DLL请求一个窗口。现在由于主GUI循环在C#可执行文件中,每当视口被关闭/销毁时,它必须调用DLL函数来请求释放相关的Direct3D设备/资源。

问题是,在尝试发布Direct3D设备时,程序会出现问题。它说一个不同的线程(我猜它是主要的C#程序,因为它发送消息到DLL)而不是创建试图释放它的设备。

有解决这个问题的方法吗?有什么想法吗?

我正在使用Direct3D 9。

帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

D3D设备调用都与创建它们的线程具有线程关联。

您必须将回调封送回主D3D线程,或者使用D3DCREATE_MULTITHREADED初始化设备,以允许从多个线程使用它。