Unity 6.3
0 онлайн 75 гостей 3 в системе
Вход

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,.