【问题标题】:Dynamic or Static vertex buffer?动态或静态顶点缓冲区?
【发布时间】:2013-05-01 05:22:29
【问题描述】:

我正在编写一个 directx 应用程序,并希望在场景的前面覆盖一个网格。网格可能会更新每一帧,但会是 20 条水平线和 20 条垂直线 (LineList)。

我想了解这种情况(少量顶点频繁更新)是否意味着动态缓冲区比静态缓冲区更合适?

有人可以就此提供建议吗?我无法找到两者之间差异的低级解释 - 听起来动态对 CPU 来说“更容易访问”,并且需要一些锁定语义,而静态则不太容易访问。

干杯

【问题讨论】:

  • 您使用的是哪个 DirectX 版本?
  • 目前是 DX10,但想评估是否切换到 DX11 - 这些版本是否会让回答有所不同?

标签: performance directx vertex-buffer


【解决方案1】:

您可能希望使用动态顶点缓冲区。如果您想逐帧更新顶点,那么动态就是要走的路。

有关更底层的描述,请参阅此 MSDN 文章

MSDN Article

【讨论】:

    【解决方案2】:

    如果您每帧都更改缓冲区,请使用动态缓冲区。

    每次更改缓冲区时,使用静态缓冲区都会导致 GPU 停顿,从而导致性能崩溃。

    我不确定direct3d10中的动态缓冲区,名字似乎来自direct3d9。 Direct3D10 有一个更精细的创建“动态”缓冲区的方案,但在任何情况下都不应该使用静态缓冲区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多