2

当发生编译错误时,我在查询信息日志后得到了这个。我无法找到一个资源来告诉我错误代码的含义!

将 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());

是不是我绑定顶点属性太快了?绑定着色器时是否必须绑定它们?

4

1 回答 1

0

解决它。对于 glsl 1.1,in 和 out 限定符无效。

请参阅Khronos OpenGL wiki - 类型限定符 (GLSL)

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

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

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

于 2010-03-07T21:38:24.457 回答