layout | 要访问的缓冲区。默认值为 BlendShapeBufferLayout.PerShape。 |
GraphicsBuffer 形状混合顶点数据作为 GraphicsBuffer。
检索一个 GraphicsBuffer,它提供对 GPU 形状混合顶点数据的直接读写访问。
此函数返回的缓冲区称为形状混合缓冲区。它包含形状混合顶点,GPU 使用这些顶点将网格变形为形状混合。
您可以访问两个形状混合缓冲区。它们使用不同的布局模式,并包含略微不同的数据。有关更多信息,请参阅 BlendShapeBufferLayout.PerShape 和 BlendShapeBufferLayout.PerVertex。需要计算着色器支持才能访问此缓冲区。
不带参数的此函数版本等效于使用 BlendShapeBufferLayout.PerShape 作为参数来调用它。
Mesh.isReadable 不需要为 true
才能访问此数据。
使用此缓冲区后,应将其释放。
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 shape, from the mesh var perShapeBuffer = mesh.GetBlendShapeBuffer(BlendShapeBufferLayout.PerShape);
// Fetch GraphicsBuffer with Blend Shape data, ordered per vertex, from the mesh var perVertexBuffer = mesh.GetBlendShapeBuffer(BlendShapeBufferLayout.PerVertex);
// Set Blend Shape data buffers to a compute shader computeShader.SetBuffer(0, "PerShape_BlendShapeBuffer", perShapeBuffer); computeShader.SetBuffer(0, "PerVertex_BlendShapeBuffer", perVertexBuffer);
// Dispatch compute shader and access Blend Shapes on the GPU, both per vertex and per shape computeShader.Dispatch(0, 64, 1, 1);
// Dispose buffers to avoid leaking memory perShapeBuffer.Dispose(); perVertexBuffer.Dispose(); } }