1

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

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

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

谢谢!

4

1 回答 1

0

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

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

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

可以在多个设备之间共享资源,但此功能仅在 windows vista 上可用。因为今天人们仍在使用 WinXP,如果你使用类似的东西,你的用户会讨厌你。

于 2012-11-24T16:09:10.133 回答