2013-04-29 152 views
0

我正在写一个directx应用程序,并希望在场景的正面覆盖一个网格。网格可能会更新每一帧,但会像20条水平线和20条垂直线(LineList)。动态或静态顶点缓冲区?

我想了解,如果这种情况(少量顶点经常更新)意味着动态缓冲区比静态缓冲区更合适?

有人能够就此提供建议吗?我一直无法找到两者之间差异的底层解释 - 听起来动态对CPU而言“更易于访问”,并且需要一些锁定语义,而静态不易访问。

干杯

+0

您正在使用哪种DirectX版本? – 2013-04-30 12:04:45

+0

此刻DX10,但要评估切换到DX11 - 这些版本做这个回答不同? – user2152466 2013-04-30 21:14:13

回答

1

你可能会希望使用动态顶点缓冲。如果你想在每帧的基础上更新顶点,那么动态就是要走的路。

看到这个MSDN文章更底层描述

MSDN Article

1

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

使用静态缓冲区会导致GPU在每次更改缓冲区时停顿,这会导致性能下降。

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