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

ComputeShader.SetConstantBuffer

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

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

关闭

取消

切换到手册

声明

public void SetConstantBuffer(int nameID, ComputeBuffer buffer, int offset, int size);

声明

public void SetConstantBuffer(string name, ComputeBuffer buffer, int offset, int size);

声明

public void SetConstantBuffer(int nameID, GraphicsBuffer buffer, int offset, int size);

声明

public void SetConstantBuffer(string name, GraphicsBuffer buffer, int offset, int size);

参数

nameID 着色器代码中常量缓冲区的属性名称的 ID。使用 Shader.PropertyToID 获取此 ID。
name 要绑定为常量缓冲区的缓冲区的名称。
buffer 要绑定为常量缓冲区的缓冲区。
offset 从 ComputeBuffer 开头绑定的字节偏移量。必须是 SystemInfo.constantBufferOffsetAlignment 的倍数,如果该值为 0,则为 0。
size 要绑定的字节数。

描述

ComputeBufferGraphicsBuffer 设为 ComputeShader 的命名常量缓冲区。

您可以使用此方法用 ComputeBufferGraphicsBuffer 的内容覆盖计算着色器常量缓冲区中的所有参数。

要使用此方法,必须满足以下条件

如果未满足上述条件,则缓冲区可能无法正确绑定,因此将拾取常规参数。或者可能会出现视觉伪像。

常量缓冲区的数据布局可能因图形 API 而异。这意味着 SetConstantBuffer 可能会覆盖数据或将变量设置为错误的值。有关更多信息,请参阅 为不同的图形 API 编写着色器

在使用非空 ComputeBuffer 或 GraphicsBuffer 调用此函数后,您将无法手动设置覆盖的常量缓冲区内变量的值。对 ComputeShader.SetFloat 和类似函数的调用(其中给定的属性名称 ID 指向覆盖的常量缓冲区内的变量)将无效。

常量缓冲区绑定到 ComputeShader 中的所有内核。