【发布时间】:2010-03-06 22:50:39
【问题描述】:
当发生编译错误时,我在查询信息日志后得到了这个。我无法找到一个资源来告诉我错误代码的含义!
将 Ubuntu 9.10 与支持 glsl 1.1 的英特尔移动芯片组结合使用。台面驱动程序。
顶点着色器:
#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());
是不是我绑定顶点属性太快了?绑定shader的时候一定要绑定吗?
【问题讨论】:
-
哪一行生成错误代码?
-
我不知道,哈哈。台面不会告诉我的!它在日志中所说的只是“错误:2001”。期间。
-
等等...您的着色器没有 m2d_texcoord0 和 m2d_vertex... 甚至 m2d_blend_color (检查下划线)。我会尝试先解决这些问题。最后...着色器代码在我看来不像 GLSL...
-
m2d_* 是我从编译代码中传入的顶点属性。
-
两个着色器都不是有效的 GLSL 1.1。 in/out 只能用于函数参数。不过它可能对 GLSL 1.3 有效。您还需要在着色器中定义顶点属性,仅在程序中绑定它们是不够的。