DirectX 9设备。渲染时创建顶点和索引缓冲区。(2个主题)

时间:2012-11-24 15:05:51

标签: c++ multithreading directx

我一直在寻找这个问题的答案。有谁知道怎么做?

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

  1. 创建一个directx9设备。为不同的线程制作副本。在加载新级别资产并创建其顶点和索引缓冲区时,渲染加载屏幕(已加载缓冲区)。
  2. 创建2个不同的directx9设备。每个线程一个。一个设备只负责渲染(并附加到窗口),另一个设备没有渲染表面,并负责制作和填充缓冲区。
  3. 创建一个带有线程安全标志的设备(我认为有这样的事情,但可能不会这样调用)并且与1中的相同。
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

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

如果您仍想要多线程,请将D3DCREATE_MULTITHREADED传递给IDirect3D9::CreateDevice。请注意,DirectX SDK明确警告使用此标志可能会降低性能。

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

可以在多个设备之间share resources,但此功能仅适用于Windows Vista。因为人们今天仍然使用WinXP,如果你使用类似的东西,你的用户会讨厌你。