Глядя на документацию MSDN, я не могу найти способ заблокировать VertexBuffers, чтобы я мог изменять их данные на устройстве. Возможно ли это в XNA?
У вас есть несколько вариантов для изменения содержимого буферов вершин в XNA:
VertexBuffer имеет члена SetData. Вы можете безопасно использовать это только за пределами Draw в любом случае, когда вы можете активировать Предикатный тайлинг (поэтому рекомендуется всегда делать это вне Draw).
VertexBuffer
SetData
Draw
DynamicVertexBuffer похоже на VertexBuffer, но быстрее при настройке его содержимого. Однако это может привести к потере графического устройства, и это условие должно быть обработано. Также взгляните на SetDataOptions.
DynamicVertexBuffer
SetDataOptions
DrawUserPrimitives (и проиндексировано версия). Это имеет то преимущество, что не влияет на Predicated Tiling и не вызывает сброса буфера команд для небольшого числа примитивов.
DrawUserPrimitives
На MSDN есть дополнительная информация о Динамически обновляемых вершинах . И эту ветку на форумах XNA также стоит прочитать.