GLSL错误:2001 - 此错误代码是什么意思?

时间:2010-03-06 22:50:40

标签: c++ opengl glsl

我在发生编译错误时查询信息日志后得到了这个。我找不到能够告诉我错误代码甚至意味着什么的单一资源!

将Ubuntu 9.10与支持glsl 1.1的Intel移动芯片组配合使用。梅萨司机。

顶点着色器:

#version 110
in vec3 m2d_blendcolor;

out vec3 color;
// out vec2 texcoord0;

void main(void)
{
    gl_Position = ftransform();
    color = m2d_blendcolor;
}

片段着色器:

#version 110

in vec3 color;

void main(void)
{
    gl_FragColor = vec4(color, 1.0);
}

当我初始化着色器对象时,我调用:

shader.bindAttrib(0, "m2d_vertex");
shader.bindAttrib(1, "m2d_texcoord0");
shader.bindAttrib(2, "m2d_blend_color");

这些电话

glBindAttribLocation(m_programID/*internal GLuint*/, index, attribName.c_str());

我是否过早绑定了顶点属性?它们必须在着色器绑定时绑定?

1 个答案:

答案 0 :(得分:0)

修正了它。对于glsl 1.1,in和out限定符无效。

请参阅Khronos OpenGL wiki - Type Qualifier (GLSL)

  

以下限定符自GLSL 1.30(OpenGL 3.0)起已弃用,已从GLSL 1.40及更高版本中删除。

     

attribute限定符实际上等效于顶点着色器中的输入限定符。它不能用于任何其他着色器阶段。它不能用在接口块中。

     

varying限定符等效于片段着色器的输入或顶点着色器的输出。它不能用于任何其他着色器阶段。它不能用在接口块中。