版本: Unity 6 (6000.0)
语言English
  • C#

Mesh.GetBlendShapeBuffer

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public GraphicsBuffer GetBlendShapeBuffer(Rendering.BlendShapeBufferLayout layout);

声明

public GraphicsBuffer GetBlendShapeBuffer();

参数

layout 要访问的缓冲区。默认值为 BlendShapeBufferLayout.PerShape

返回值

GraphicsBuffer 形状混合顶点数据作为 GraphicsBuffer

描述

检索一个 GraphicsBuffer,它提供对 GPU 形状混合顶点数据的直接读写访问。

此函数返回的缓冲区称为形状混合缓冲区。它包含形状混合顶点,GPU 使用这些顶点将网格变形为形状混合。

您可以访问两个形状混合缓冲区。它们使用不同的布局模式,并包含略微不同的数据。有关更多信息,请参阅 BlendShapeBufferLayout.PerShapeBlendShapeBufferLayout.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(); } }