GPU 图形数据缓冲区,用于处理几何体或计算着色器数据。
ComputeShader 程序通常需要从内存缓冲区读取或写入任意数据,并且某些渲染算法需要比 Mesh 类提供的更低级别的访问或控制几何体数据。您可以将 GraphicsBuffer
用于这些情况。您可以从 C# 脚本创建缓冲区,然后使用 C# 脚本或计算着色器程序填充数据。
图形缓冲区类似于 C# 中的数组,因为它具有相同大小 (stride) 的多个元素 (count)。在创建 GraphicsBuffer 时,您必须提供预期的缓冲区使用情况 (target);例如,您必须传递 GraphicsBuffer.Target.Index 以使缓冲区可用作几何体索引缓冲区。
完成对缓冲区的操作后,您必须手动释放 GPU 内存。您可以使用 C# dispose 模式或通过调用 Release 来执行此操作。
其他资源:Graphics.RenderPrimitivesIndexed、Graphics.RenderPrimitivesIndexedIndirect、Graphics.CopyBuffer、ComputeShader、Shader.SetGlobalBuffer、Material.SetBuffer。
bufferHandle | 此 GraphicsBuffer 的内部句柄。仅在缓冲区被释放之前有效。(只读) |
count | 缓冲区中元素的数量(只读)。 |
name | 图形缓冲区的调试标签(仅限设置器)。 |
stride | 缓冲区中一个元素的大小。对于索引缓冲区,这必须是 2 或 4 字节(只读)。 |
target | 目标,指定此 GraphicsBuffer 的预期目标(只读)。 |
usageFlags | 指定此 GraphicsBuffer 如何使用或更新的标志(只读)。 |
GraphicsBuffer | 创建图形缓冲区。 |
GetData | 将缓冲区中的数据值读取到数组中。该数组只能使用可blit类型。 |
GetNativeBufferPtr | 检索指向缓冲区的本机(底层图形 API)指针。 |
IsValid | 如果此图形缓冲区有效,则返回 true,否则返回 false。 |
LockBufferForWrite | 开始对缓冲区进行写入操作 |
Release | 释放 Graphics Buffer。 |
SetCounterValue | 设置追加/使用缓冲区的计数器值。 |
SetData | 使用数组中的值设置缓冲区。 |
UnlockBufferAfterWrite | 结束对缓冲区的写入操作 |
CopyCount | 将 GraphicsBuffer 的计数器值复制到另一个缓冲区。 |