Mesh.GetBlendShapeBuffer
Declaration
public GraphicsBuffer GetBlendShapeBuffer(Rendering.BlendShapeBufferLayout layout);public GraphicsBuffer GetBlendShapeBuffer();Параметры
| Параметр | Описание |
|---|---|
| макет | Какой буфер будет доступен. Значение по умолчанию — 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(); } }
Дополнительные ресурсы: Формы смеси, BlendShapeBufferLayout, Mesh.GetBoneWeightBuffer.