2010-07-30 48 views

回答

2

你有多种选择在XNA修改顶点缓冲区的内容:

  • VertexBufferSetData成员。在任何情况下,您只能在Draw之外安全地使用此项目,您可以激活Predicated Tiling(因此最好总是在Draw之外完成)。

  • DynamicVertexBuffer就像VertexBuffer,但设置其内容时速度更快。但是它很容易丢失图形设备,并且必须处理这种情况。另请看SetDataOptions

  • DrawUserPrimitives(和indexed版本)。这具有不影响Predicated Tiling的优点,并且不会导致命令缓冲区对少量基元进行刷新。

有关MSDN约Dynamically Updating Vertices的详细信息。而XNA论坛上的this thread也值得一读。

+0

非常感谢。这是很多很好的信息。还有一个问题:在Draw之外的VertexBuffer上调用SetData总是安全的吗? – blachniet 2010-07-30 15:38:09

+1

@blachniet:是的(实际上它是一个命令缓冲区,但是,是的,在简单情况下,在Draw之外)。您听起来像是来自DirectX背景:如果需要绝对确定XNA在后台执行的操作,则始终可以通过PIX运行您的游戏。 – 2010-07-30 15:58:10

相关问题