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

问题描述 投票:0回答:1

我正在尝试遵循教程,当我尝试编译他制作的顶点着色器时,我得到以下输出:

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);
}
java opengl glsl shader vertex-shader
1个回答
1
投票

输入布局位置限定符(请参阅顶点着色器属性索引)是在 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)
© www.soinside.com 2019 - 2024. All rights reserved.