Unity 6.3
0 онлайн 40 гостей 3 в системе
Вход

Mesh.GetIndexBuffer

Declaration

public GraphicsBuffer GetIndexBuffer();

Возвращаемое значение

GraphicsBuffer Буфер индекса сетки как GraphicsBuffer.

Описание

Получает GraphicsBuffer в буфер индекса GPU.

Большинство методов Mesh работают с CPU копией данных сетки, которую Unity затем загружает в GPU. Например, SetIndexBufferData модифицирует CPU копию данных, а UploadMeshData отправляет CPU копию данных в GPU.

Вы можете получить доступ к GPU копии буфера индекса непосредственно с помощью GetIndexBuffer. Это позволяет более непосредственно манипулировать данными индекса сетки на GPU, что потенциально может повысить производительность. Однако любые изменения, которые вы делаете в данных индекса таким образом, не будут отражены в CPU копии данных сетки.

Вы также можете использовать этот метод, чтобы сделать буфер индекса доступным для чтения или записи в ComputeShader. Для этого сначала запросите соответствующую цель привязки буфера через indexBufferTarget, затем получите данные сетки с помощью GetIndexBuffer, а затем установите их в качестве параметра для своих шейдеров с помощью ComputeBuffer.SetBuffer, Material.SetBuffer и аналогичных методов.

Если вы измените копию данных CPU, это может привести к повторному созданию буфера индекса GPU; в этом случае вы должны снова вызвать 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,.