有没有办法在 XNA 中锁定 VertexBuffers?
查看 MSDN 文档,我找不到锁定 VertexBuffer 的方法,以便我可以在设备上更改其数据。这在 XNA 中可能吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
查看 MSDN 文档,我找不到锁定 VertexBuffer 的方法,以便我可以在设备上更改其数据。这在 XNA 中可能吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
您可以使用多种选项来修改 XNA 中顶点缓冲区的内容:
VertexBuffer
有一个SetData
成员。在任何可以激活 Draw 之外安全地使用此功能“nofollow noreferrer">预测平铺(因此,最好总是在 Draw 之外执行此操作)。DynamicVertexBuffer
类似于VertexBuffer
,但设置其内容时速度更快。然而,它很容易丢失图形设备,必须处理这种情况。另请查看SetDataOptions< /code>
.
DrawUserPrimitives< /code>
(和 索引版本)。这样做的优点是不影响谓词平铺,并且不会导致命令缓冲区刷新少量基元。
MSDN 上有关于动态更新顶点的更多信息。 XNA 论坛上的此帖子也可能值得一读。
You have a number of options for modifying the contents of vertex buffers in XNA:
VertexBuffer
has aSetData
member. You can only safely use this outside ofDraw
in any case where you may activate Predicated Tiling (so it's good practice to simply always do it outside of Draw).DynamicVertexBuffer
is likeVertexBuffer
, but faster when settings its contents. However it is susceptible to the graphics device being lost, and this condition must be handled. Also take a look atSetDataOptions
.DrawUserPrimitives
(and indexed version). This has the advantages of not affecting Predicated Tiling, and not causing the the command buffer to flush for small numbers of primitives.There is more information on MSDN about Dynamically Updating Vertices. And this thread on the XNA forums may also be worth reading.