Mesh.SetVertexBufferParams
Declaration
public void SetVertexBufferParams(int vertexCount, params VertexAttributeDescriptor[] attributes);public void SetVertexBufferParams(int vertexCount, NativeArray<VertexAttributeDescriptor> attributes);Параметры
| Параметр | Описание |
|---|---|
| vertexCount | Число вершин в сетке. |
| атрибуты | 3. Формат данных о вершинах — какие атрибуты присутствуют, их типы данных и т.д. |
Описание
Задает размер и расположение вершинного буфера.
Примечание: этот метод предназначен для опытных пользователей, которым требуется максимальная производительность. Он работает с низкоуровневыми структурами данных Mesh — необработанными буферами индексов и вершин, а также данными подмножеств сетки. Unity выполняет лишь минимальную проверку, поэтому вы должны самостоятельно обеспечить корректность данных.
В частности, убедитесь, что буфер индексов не содержит индексов за пределами допустимого диапазона, а диапазон индексов и границы SubMesh обновлены с помощью SetSubMesh.
Различия между простыми и расширенными методами передачи данных в Mesh из скрипта описаны в примечаниях Mesh на странице.
Сведения о задании структуры атрибутов Mesh см. в разделе VertexAttributeDescriptor.
using UnityEngine; using UnityEngine.Rendering;
public class Example : MonoBehaviour { void Start() { var mesh = new Mesh(); // specify vertex layout with: // - floating point positions, // - half-precision (FP16) normals with two components, // - low precision (UNorm8) tangents var layout = new[] { new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3), new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float16, 2), new VertexAttributeDescriptor(VertexAttribute.Tangent, VertexAttributeFormat.UNorm8, 4), }; var vertexCount = 10; mesh.SetVertexBufferParams(vertexCount, layout);
// ...later on SetVertexBufferData would be used to set the actual vertex data } }
Если размер буфера вершин превышает максимальный размер буфера, поддерживаемый устройством, метод вызывает исключение. Дополнительные сведения см. в SystemInfo.maxGraphicsBufferSize.
Дополнительные ресурсы: SetVertexBufferData, VertexAttributeDescriptor, GetVertexAttributes.