Объявление
public void SetVertexBufferParams(int vertexCount, params VertexAttributeDescriptor[] attributes);public void SetVertexBufferParams(int vertexCount, NativeArray
Параметры
vertexCount | Количество вершин в сетке. |
attributes | Расположение данных вершины — какие атрибуты присутствуют, их типы данных и так далее. |
Описание
Задает размер и расположение буфера вершин.
Примечание. Этот метод предназначен для опытных пользователей, стремящихся к максимальной производительности, поскольку он работает с базовыми структурами данных сетки, которые в основном работают с буферами необработанных индексов, буферами вершин и данными подмножества сетки. Используя этот метод, Unity выполняет очень небольшую проверку данных, поэтому вы должны убедиться, что ваши данные действительны.
В частности, вы должны убедиться, что индексный буфер не содержит индексов, выходящих за границы, и что диапазон и границы индекса SubMesh обновляются с помощью SetSubMesh.
Информацию о разнице между более простыми и более сложными методами присвоения данных 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
}
}
Смотрите так же: SetVertexBufferData, VertexAttributeDescriptor, GetVertexAttributes.