Mesh.vertexBufferTarget
Declaration
public GraphicsBuffer.Target vertexBufferTarget;Описание
Предполагаемое использование вершинного буфера Mesh GPU.
По умолчанию, буферы вершин сетки имеют цель использования GraphicsBuffer.Target.Vertex. Если вы хотите получить доступ к буферу вершин сетки из вычислительного шейдера, необходимо запросить дополнительные цели, например GraphicsBuffer.Target.Raw.
При установке этого свойства в новое значение, Unity уничтожает существующий буфер и создает новый буфер с указанной целью. Чтобы новый буфер был правильно заполнен данными, данные сетки должны находиться на CPU. Вы можете проверить свойство Mesh.isReadable, чтобы определить, доступны ли данные сетки на CPU.
using UnityEngine;
public class ExampleScript : MonoBehaviour { public Mesh mesh; public ComputeShader computeShader; void Start() { // Mark the vertex buffer as needing "Raw" // (ByteAddressBuffer, RWByteAddressBuffer in HLSL shaders) // access. mesh.vertexBufferTarget |= GraphicsBuffer.Target.Raw; // Get the vertex buffer of the Mesh, and set it up // as a buffer parameter to a compute shader. var vertexBuffer = mesh.GetVertexBuffer(0); computeShader.SetBuffer(0, "MeshVertexBuffer", vertexBuffer); vertexBuffer.Dispose(); } }
Дополнительные ресурсы: ,Target,, ,GetVertexBuffer,, ,indexBufferTarget,.