Я пытаюсь написать базовый вершинный шейдер в 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;
}
работает просто отлично. Кто-нибудь может пролить свет на это для меня?