我在发生编译错误时查询信息日志后得到了这个。我找不到能够告诉我错误代码甚至意味着什么的单一资源!
将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());
我是否过早绑定了顶点属性?它们必须在着色器绑定时绑定?
答案 0 :(得分:0)
修正了它。对于glsl 1.1,in和out限定符无效。
请参阅Khronos OpenGL wiki - Type Qualifier (GLSL):
以下限定符自GLSL 1.30(OpenGL 3.0)起已弃用,已从GLSL 1.40及更高版本中删除。
attribute
限定符实际上等效于顶点着色器中的输入限定符。它不能用于任何其他着色器阶段。它不能用在接口块中。
varying
限定符等效于片段着色器的输入或顶点着色器的输出。它不能用于任何其他着色器阶段。它不能用在接口块中。