我正在尝试遵循教程,当我尝试编译他制作的顶点着色器时,我得到以下输出:
Vertex shader failed to compile with the following errors:
ERROR: 0:3: error(#279) Invalid layout qualifier 'location'
ERROR: error(#273) 1 compilation errors. No code generated
我使用 GLSL 3.2.9232 和我的代码:
#version 150
layout (location = 0) in vec3 position;
void main()
{
gl_Position = vec4(0.25 * position, 1.0);
}
输入布局位置限定符(请参阅顶点着色器属性索引)是在 GLSL 3.30 中引入的,不能在 GLSL 1.50 中使用。比较 OpenGL 着色语言 3.30 规范 和 OpenGL 着色语言 1.50 规范。
切换到 glsl 3.30:
#version 150
#version 330
如果您的系统不支持 GLSL 3.30,则必须删除布局限定符
layout (location = 0) in vec3 position;
in vec3 position;
glBindAttribLocation
指定属性位置:
glBindAttribLocation(program, 0, "position"); // has to be done before glLinkProgram
glLinkProgram(program)