shader_set_uniform_f

使用此函数,可以设置着色器常量的值。您必须之前使用函数shader_get_uniform()获得常量的"句柄",并且您必须知道将正确数目的浮点值传递给它的常量类型,即:如果您有一个vec2,则需要将两个值传递给函数。

上述规则的例外情况是处理32位颜色值时。可以将多达八个 32 位颜色值传递到着色器中,它们将自动转换为 0-1 的 vec4 值。但是,为此,必须使用着色器常量名称in_Colour表示单一颜色,或in_Colour0in_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]);

参数类型描述
handleShader Uniform Handle要设置的着色器常量的句柄。
value1 ... value4Real要将着色器常量设置为的浮点值。

 

返回:

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)的句柄,然后将该常量设置为给定值。