错误:0:3:错误#279无效的布局限定符“位置”

问题描述

我正在尝试按照教程进行操作,当我尝试编译顶点着色器时,他得到了以下输出

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 SpecificationOpenGL 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)