Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public void SetVertexBufferData(NativeArray data, int dataStart, int meshBufferStart, int count, int stream, Rendering.MeshUpdateFlags flags);

public void SetVertexBufferData(T[] data, int dataStart, int meshBufferStart, int count, int stream, Rendering.MeshUpdateFlags flags);

public void SetVertexBufferData(List data, int dataStart, int meshBufferStart, int count, int stream, Rendering.MeshUpdateFlags flags);

Параметры

data Массив данных вершин.
dataStart Первый элемент данных для копирования.
meshBufferStart Первый элемент в буфере вершин сетки для получения данных.
count Количество вершин для копирования.
stream Поток буфера вершин, для которого устанавливаются данные (по умолчанию 0).
flags Флаги, управляющие поведением функции, см. MeshUpdateFlags.

Описание

Устанавливает данные буфера вершин сетки.

Простое использование API сценариев Mesh предполагает использование таких функций, как вершины, нормали для настройки данных вершин.

Для расширенных вариантов использования, требующих максимальной производительности, вы можете использовать расширенный API, который имеет такие функции, как SetSubMesh, SetIndexBufferParams. , SetIndexBufferData и SetVertexBufferParams. Этот расширенный API предоставляет доступ к базовым структурам данных сетки, которые в основном работают с буферами необработанных индексов, буферами вершин и данными подмножества сетки.

Вы можете использовать SetVertexBufferData для прямой установки данных вершины без использования преобразования формата для каждого атрибута вершины. Предоставленный макет данных должен соответствовать макету данных вершин меша (см. ::SetVertexBufferParams, GetVertexAttributes). Также возможно частичное обновление данных через dataStart, meshBufferStart, count параметры.

using UnityEngine; using UnityEngine.Rendering; using Unity.Collections; public class Example : MonoBehaviour { // Vertex with FP32 position, FP16 2D normal and a 4-byte tangent. // In some cases StructLayout attribute needs // to be used, to get the data layout match exactly what it needs to be. [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] struct ExampleVertex { public Vector3 pos; public ushort normalX, normalY; public Color32 tangent; } void Start() { var mesh = new Mesh(); // specify vertex count and layout 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); // set vertex data var verts = new NativeArray(vertexCount, Allocator.Temp); // ... fill in vertex array data here... mesh.SetVertexBufferData(verts, 0, 0, vertexCount); } }

Смотрите так же: SetVertexBufferParams, SetIndexBufferParams, SetIndexBufferData, SetSubMesh, MeshUpdateFlags, AcquireReadOnlyMeshData.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3