版本:Unity 6(6000.0)
语言英语
  • C#

ComputeBufferType.Structured

建议更正

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然无法接受所有提交内容,但我们确实会阅读用户提出的每条更正建议并酌情进行更新。

关闭

提交失败

由于某些原因,无法提交您的更正建议。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量!

关闭

取消

描述

你可以将ComputeBuffer用作结构化缓冲区。

这在其它方面与ComputeBufferType.Default完全相同,除了使用了其他任何ComputeBufferType标志,则所生成的 ComputeBuffer 将不能绑定为结构化缓冲区,除非显式添加ComputeBufferType.Structured

在构造此类型的 ComputeBuffer 时,stride的值必须匹配 HLSL 中相应StructuredBuffer结构类型的偏移。

stride的值也必须为 4 的倍数,且小于 2048。

为了满足某些平台上的需求并避免性能问题,stride应为 16 的倍数。使用 float4 和 float4x4 变量来创建 16 的倍数,并将较小的变量放入其中。避免使用“填充”变量来创建 16 的倍数,例如使用 float3 变量填充仅包含一个 float 的结构,因为某些数据类型在不同平台上的大小可能不同。

如果你使用多种不同大小的变量,着色器的结构化缓冲区的数据布局可能因图形 API 而异。这意味着ComputeShader.SetBufferMaterial.SetBuffer可能覆盖数据或将变量设置为错误的值。请参阅为不同的图形 API 编写着色器以了解更多信息。