我有一个使用Direct3D渲染视口的应用程序,它是作为一个单独的DLL模块从主应用程序制作的,它在运行时链接到它。主要应用程序是C#程序。
Direct3D设备及其资源的创建和初始化在本机DLL端完成。主C#程序只从这个DLL请求一个窗口。现在由于主GUI循环在C#可执行文件中,每当视口被关闭/销毁时,它必须调用DLL函数来请求释放相关的Direct3D设备/资源。
问题是,在尝试发布Direct3D设备时,程序会出现问题。它说一个不同的线程(我猜它是主要的C#程序,因为它发送消息到DLL)而不是创建试图释放它的设备。
有解决这个问题的方法吗?有什么想法吗?
我正在使用Direct3D 9。
帮助表示赞赏。
答案 0 :(得分:0)
D3D设备调用都与创建它们的线程具有线程关联。
您必须将回调封送回主D3D线程,或者使用D3DCREATE_MULTITHREADED初始化设备,以允许从多个线程使用它。