按网格顶点对数据进行排序。
当你使用此选项调用 Mesh.GetBlendShapeBuffer 时,它将返回一个 GraphicsBuffer,其中包含按网格顶点排序的混合形状顶点数据。
在此缓冲区中,每个混合形状顶点包含
在此缓冲区中,具体布局取决于网格顶点的数量。它的工作原理如下
连续的混合形状顶点数据作为一个 32 位值数组进行存储。你必须手动将数据转换成适当的类型。
Unity 在首次创建网格时不会创建此缓冲区。相反,它会在首次访问时按需创建此缓冲区。这意味着在你第一次访问缓冲区时,会导致 CPU 和 GPU 内存分配。
using UnityEngine; using UnityEngine.Rendering;
public class Example : MonoBehaviour { public Mesh mesh; public ComputeShader computeShader;
void Start() { // Fetch GraphicsBuffer with Blend Shape data, ordered per vertex, from the mesh var perVertexBuffer = mesh.GetBlendShapeBuffer(BlendShapeBufferLayout.PerVertex);
// Set Blend Shape data buffer to a compute shader computeShader.SetBuffer(0, "PerVertex_BlendShapeBuffer", perVertexBuffer);
// Dispatch compute shader and access Blend Shape Data on the GPU computeShader.Dispatch(0, 64, 1, 1);
// Dispose of GraphicsBuffer to avoid leaking memory perVertexBuffer.Dispose(); } }