Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public GraphicsBuffer GetVertexBuffer(int index);

Параметры

index Индекс потока данных вершины, для которого требуется получить буфер.

Возвращает

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

Описание

Получает GraphicsBuffer, обеспечивающий прямой доступ к буферу вершин графического процессора.

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

Вы можете получить доступ к копии графического процессора буфера вершин напрямую, используя GetVertexBuff. Это позволяет более прямо манипулировать данными индекса сетки на графическом процессоре, что потенциально может повысить производительность. Однако любые изменения, внесенные вами в данные индекса таким образом, не будут отражены в копии данных меша на ЦП.

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

GetVertexBufferStride, GetVertexAttributeOffset и связанные с ними методы могут использоваться для запроса точного расположения и формата данных вершин сетки. , чтобы вычислительный шейдер мог правильно получить к нему доступ.

Если вы измените копию данных ЦП, это может привести к повторному созданию буферов вершин графического процессора; в этом случае вы должны снова вызвать GetVertexBuffer.

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(); } }

Смотрите так же: GetIndexBuffer, vertexBufferTarget.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3