【问题标题】:ERROR: 0:3: error(#279) Invalid layout qualifier 'location'错误:0:3:错误(#279)无效的布局限定符“位置”
【发布时间】:2020-10-15 16:29:31
【问题描述】:

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

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】:

    输入布局位置限定符(请参阅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, 0, "position"); // has to be done before glLinkProgram
    glLinkProgram(program)
    

    【讨论】:

    • 那我该怎么办
    • 如果我输入#version 330,它会告诉我该版本不受支持
    • 哦哦,我以为就这样了
    • 我终于得到了三角形 yayyyyyyy
    • 没问题你帮了我很多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2021-12-22
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多