动态还是静态顶点缓冲区?

时间:2013-04-29 22:24:39

标签: performance directx vertex-buffer

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

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

有人能就此提出建议吗?我无法找到两者之间差异的低级别解释 - 听起来像动态是'更容易'到CPU并且需要一些锁定语义而静态则不太容易访问。

干杯

2 个答案:

答案 0 :(得分:1)

您可能希望使用动态顶点缓冲区。如果你想在每帧的基础上更新顶点,那么动态就是你的选择。

有关更低级别的说明,请参阅此MSDN文章

MSDN Article

答案 1 :(得分:1)

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

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

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