stream | Vertex data stream index to check for. |
int Vertex data size in bytes in this stream, or zero if the stream is not present.
Get vertex buffer stream stride in bytes.
Meshes usually use a single vertex buffer stream. But it is possible to setup a vertex layout where some attributes use different vertex buffers (see SetVertexBufferParams, VertexAttributeDescriptor). You can use this function to query vertex data size in bytes within the given stream.
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); } }
Additional resources: vertexBufferCount, GetVertexAttributeOffset, SetVertexBufferParams.