Mesh.GetVertexBufferStride
Declaration
public int GetVertexBufferStride(int stream);Параметры
| Параметр | Описание |
|---|---|
| поток | Индекс потока данных вершины для проверки. |
Возвращаемое значение
инт Размер данных вершины в байтах в этом потоке, или ноль, если поток отсутствует.
Описание
Получить шаг потока вершинного буфера в байтах.
Этот метод возвращает шаг потока вершинного буфера, указанный индексом stream. Шаг представляет собой общий размер в байтах, занятый всеми атрибутами вершин, принадлежащими одной вершине в этом потоке. Он представляет расстояние в байтах между началом данных одной вершины и началом данных следующей вершины в буфере, связанном с этим потоком.
Значение шага необходимо при выполнении вычислений для прямого доступа к буферу (e.g., используя MeshData или GraphicsBuffer) или при интерфейсе с графикой APIs, которая требует информации о расположении буфера вершин. Например, вы можете использовать шаг для вычисления адреса памяти конкретной вершины в буфере потока address = baseAddress + vertexIndex * stride.
Примечание: шаг дает общий размер вершины в потоке, а не смещение конкретного атрибута в этой вершине. Чтобы получить смещение конкретного атрибута в потоке, используйте GetVertexAttributeOffset.
using UnityEngine; using UnityEngine.Rendering;
public class ExampleScript : MonoBehaviour { void Start() { // Create a Mesh with custom vertex data layout: // position and normal go into stream 0, // color goes into stream 1. var mesh = new Mesh(); mesh.SetVertexBufferParams(10, new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3, stream:0), new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float32, 3, stream:0), new VertexAttributeDescriptor(VertexAttribute.Color, VertexAttributeFormat.UNorm8, 4, stream:1));
// Prints 2 (two vertex streams) Debug.Log($"Vertex stream count: {mesh.vertexBufferCount}"); // Next two lines print: 24 (12 bytes position + 12 bytes normal), 4 (4 bytes color) Debug.Log($"Steam 0 stride {mesh.GetVertexBufferStride(0)}"); Debug.Log($"Steam 1 stride {mesh.GetVertexBufferStride(1)}");
// Cleanup Object.DestroyImmediate(mesh); } }
Дополнительные ресурсы: ,vertexBufferCount,, ,GetVertexAttributeOffset,, ,SetVertexBufferParams,.