computeBufferStartIndex | 写入操作将发生的元素数量的偏移量 |
count | 将写入的最大元素数量 |
NativeArray<T> 大小为 count 的 NativeArray
开始对缓冲区执行写入操作
使用此方法开始对缓冲区执行写入操作。使用此方法比使用 ComputeBuffer.SetData 导致更少的内存复制,因此速度更快。出于兼容性原因,您只能在 ComputeBufferMode 为 ComputeBufferMode.SubUpdates 的缓冲区上调用此方法。如果您在具有不同 ComputeBufferMode 的缓冲区上调用此方法,Unity 将抛出异常。
如果可能,返回的本机数组将直接指向 GPU 内存。如果无法直接写入 GPU 内存,则返回的本机数组将指向 CPU 内存中的临时缓冲区。是否可以直接写入 GPU 内存取决于许多因素,包括缓冲区模式、活动显卡和硬件支持。
因此,返回数组的内容不保证反映 GPU 端缓冲区的数据内容。因此,您应该仅将返回的数组用于写入,而不是用于读取。
写入数组后,调用 ComputeBuffer.EndWrite 以完成操作并将返回的 NativeArray 标记为不可用。
此方法的性能将根据它是否可以直接写入 GPU 内存而有所不同,但它始终会导致比使用 SetData 更少的内存复制。
写入返回的本机数组的数据必须遵循所用图形 API 的数据布局规则。有关跨平台兼容性信息,请参阅 计算着色器。
其他资源:ComputeBuffer.SetData、ComputeBuffer.EndWrite