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