查看MSDN文档,我找不到锁定VertexBuffers的方法,以便在设备上更改数据。这在XNA中是否可行?
答案 0 :(得分:2)
您可以使用许多选项来修改XNA中的顶点缓冲区的内容:
VertexBuffer
有SetData
个成员。在任何可以激活Predicated Tiling的情况下,你都可以安全地在Draw
之外使用它(所以最好总是在Draw之外完成它。)
DynamicVertexBuffer
与VertexBuffer
类似,但在设置内容时速度更快。但是它很容易丢失图形设备,必须处理这种情况。另请查看SetDataOptions
。
DrawUserPrimitives
(和indexed版本)。这样做的好处是不会影响Predicated Tiling,也不会导致命令缓冲区刷新少量基元。
MSDN上有关于Dynamically Updating Vertices的更多信息。而且,XNA论坛上的this thread也值得一读。