C++ DirectX 9设备。渲染时创建顶点和索引缓冲区。(2个线程)

C++ DirectX 9设备。渲染时创建顶点和索引缓冲区。(2个线程),c++,multithreading,directx,C++,Multithreading,Directx,我一直在寻找这个问题的答案有一段时间了。有人知道怎么做吗 我有一些想法,你能告诉我它们是否有效,哪一个是最好的(如果有合适的解决方案) 创建单个directx9设备。为不同的线程制作一个副本。加载新级别资源并创建其顶点和索引缓冲区时,渲染加载屏幕(已加载缓冲区) 创建两个不同的directx9设备。每根线一根。一个设备仅负责渲染(并连接到窗口),另一个设备没有渲染曲面,负责制作和填充缓冲区 创建一个带有线程安全标志的设备(我认为有这样的东西,但它可能不是这样被调用的),并按照1中的方法进行操作

我一直在寻找这个问题的答案有一段时间了。有人知道怎么做吗

我有一些想法,你能告诉我它们是否有效,哪一个是最好的(如果有合适的解决方案)

  • 创建单个directx9设备。为不同的线程制作一个副本。加载新级别资源并创建其顶点和索引缓冲区时,渲染加载屏幕(已加载缓冲区)
  • 创建两个不同的directx9设备。每根线一根。一个设备仅负责渲染(并连接到窗口),另一个设备没有渲染曲面,负责制作和填充缓冲区
  • 创建一个带有线程安全标志的设备(我认为有这样的东西,但它可能不是这样被调用的),并按照1中的方法进行操作

  • 谢谢

    如果您只是想加载一个级别,那么实际上不需要单独的线程。例如,您可以在加载资源时重新绘制场景。我建议避免使用多线程,除非你不能没有它

    如果仍然需要多线程,请传入。请注意,DirectX SDK明确警告使用此标志可能会降低性能

    创建单个设备是首选解决方案,即我建议使用#1


    可以在多个设备之间切换,但此功能仅在windows vista上可用。因为现在人们仍然使用WinXP,如果您使用类似的功能,您的用户会讨厌您。

    为什么要这样做?我需要在呈现加载屏幕时加载我的级别。加载级别->IO(从硬盘加载),然后创建directx对象(缓冲区、纹理、着色器…)并填充它们。