问题描述
我正在尝试按照教程进行操作,当我尝试编译顶点着色器时,他得到了以下输出:
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);
}
解决方法
输入布局位置限定符(请参见Vertex shader attribute index)在GLSL 3.30中引入,不能在GLSL 1.50中使用。比较OpenGL Shading Language 3.30 Specification和OpenGL Shading Language 1.50 Specification。
切换到glsl 3.30:
#version 150
#version 330
如果您的系统不支持GLSL 3.30,则必须删除布局限定符
layout (location = 0) in vec3 position;
in vec3 position;
在链接程序之前,您可以使用glBindAttribLocation
指定属性位置:
glBindAttribLocation(program,"position"); // has to be done before glLinkProgram
glLinkProgram(program)