我正在尝试在 GLSL 中编写一个基本的顶点着色器,为了清楚起见,我想添加一些函数来创建矩阵并在 main() 循环之外执行其他简单操作。
但是,当我尝试执行时:
uniform float scale;
void main()
{
vec4 pos = gl_ProjectionMatrix * gl_Vertex;
pos *= scaleMatrix(scale);
gl_Position = pos;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
}
mat4 scaleMatrix(const in float s) {
return mat4(s, 0.0, 0.0, 0.0,
0.0, s, 0.0, 0.0,
0.0, 0.0, s, 0.0,
0.0, 0.0, 0.0, 1.0 );
}
我收到错误:错误 C1008:未定义的变量“scaleMatrix”。然而
uniform float scale;
void main()
{
vec4 pos = gl_ProjectionMatrix * gl_Vertex;
pos *= mat4(s, 0.0, 0.0, 0.0,
0.0, s, 0.0, 0.0,
0.0, 0.0, s, 0.0,
0.0, 0.0, 0.0, 1.0 );
gl_Position = pos;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
}
工作得很好。任何人都可以为我阐明这一点吗?