使用此函数,可以设置着色器常量的值。您必须之前使用函数shader_get_uniform()获得常量的"句柄",并且您必须知道将正确数目的浮点值传递给它的常量类型,即:如果您有一个vec2,则需要将两个值传递给函数。
上述规则的例外情况是处理32位颜色值时。可以将多达八个 32 位颜色值传递到着色器中,它们将自动转换为 0-1 的 vec4 值。但是,为此,必须使用着色器常量名称in_Colour表示单一颜色,或in_Colour0、in_Colour1等... 最多in_Colour7用于多个输入值。下面的示例显示了在着色器本身中的外观:
//Single colour
attribute vec2 in_Position;
attribute vec4 in_Colour;
attribute vec2 in_TextureCoord;
//Multiple colours
attribute vec2 in_Position;
attribute vec4 in_Colour0;
attribute vec4 in_Colour1;
attribute vec2 in_TextureCoord;
另请注意,如果您想使用 4 字节颜色格式进行压缩法线等,那么您还必须使用与上面所示相同的 "in_Colour" 格式。
注意 必须在调用函数 shader_set 之后 和调用 shader_reset 之前 设置所有 uniforms 。
shader_set_uniform_f(handle, value1 [, value2, value3, value4]);
参数 | 类型 | 描述 |
---|---|---|
handle | Shader Uniform Handle | 要设置的着色器常量的句柄。 |
value1 ... value4 | Real | 要将着色器常量设置为的浮点值。 |
N/A
shader_set(shader_Glass);
shader_params = shader_get_uniform(shader_Glass, "u_vParams");
shader_set_uniform_f(shader_params, 0.1, 0.8, 0.25);
draw_self();
shader_reset();
上面的代码将获得着色器常量"u_vParams"(avec3)的句柄,然后将该常量设置为给定值。