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

Material.SetConstantBuffer

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

声明

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

声明

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

声明

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

声明

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

参数

name 要覆盖的常量缓冲区的名称。
value 用于覆盖常量缓冲区值的 ComputeBuffer,或 null 以移除绑定。
offset 从缓冲区开头开始绑定的偏移量(以字节为单位)。必须是 SystemInfo.constantBufferOffsetAlignment 的倍数,如果该值为 0,则必须为 0。
size 要绑定的字节数。
nameID 要覆盖的常量缓冲区的着色器属性 ID。

描述

ComputeBufferGraphicsBuffer 作为命名常量缓冲区设置为材质。

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

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

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

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