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

Mesh.GetVertexAttributeOffset

Declaration

public int GetVertexAttributeOffset(Rendering.VertexAttribute attr);

Параметры

Параметр Описание
АТР Атрибут данных вершины для проверки.

Возвращаемое значение

инт Байтовое смещение в пределах атрибута data, или -1, если оно отсутствует.

Описание

Получить смещение в потоке вершинного буфера определенного атрибута данных вершины на этой сетке.

Этот метод возвращает байтовое смещение для определенного атрибута вершины (например, положение, нормаль или цвет) относительно начала данных отдельной вершины в потоке вершинного буфера, содержащем этот атрибут.

Unity позволяет гибкие вершинные макеты данных, где атрибуты могут быть переплетены в один поток (обычно поток 0) или разделены на несколько потоков с помощью SetVertexBufferParams. Эта функция автоматически определяет, в каком потоке находится указанный `attr`, и рассчитывает его байтовое смещение от начала элемента вершины в этом конкретном потоке.

Знание этого смещения полезно, когда вам нужно получить прямой доступ или интерпретировать необработанные данные вершинного буфера, например, при работе с MeshData API или GraphicsBuffer, так как оно позволяет вам точно определить начало данных атрибута в правильном буфере.

Если вам нужен конкретный индекс потока, содержащего атрибут, используйте GetVertexAttributeStream. Чтобы получить общий размер (шаг) одной вершины в потоке атрибута, используйте GetVertexBufferStride, передавая индекс потока, полученный из `GetVertexAttributeStream`.

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 offsets: 0, 12, 0 Debug.Log($"Position offset {mesh.GetVertexAttributeOffset(VertexAttribute.Position)}"); Debug.Log($"Normal offset {mesh.GetVertexAttributeOffset(VertexAttribute.Normal)}"); Debug.Log($"Color offset {mesh.GetVertexAttributeOffset(VertexAttribute.Color)}");

// Cleanup Object.DestroyImmediate(mesh); } }

Дополнительные ресурсы: ,VertexAttribute,, ,HasVertexAttribute,, ,GetVertexAttributeStream,, ,vertexBufferCount,, ,GetVertexBufferStride,.