GLSL 错误:2001 - 此错误代码是啥意思?
Posted
技术标签:
【中文标题】GLSL 错误:2001 - 此错误代码是啥意思?【英文标题】:GLSL Error: 2001 - What does this error code mean?GLSL 错误:2001 - 此错误代码是什么意思? 【发布时间】: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 有效。您还需要在着色器中定义顶点属性,仅在程序中绑定它们是不够的。 【参考方案1】:修复它。在 glsl 1.1 中,in 和 out 限定符无效。
见Khronos OpenGL wiki - Type Qualifier (GLSL):
以下限定符自 GLSL 1.30 (OpenGL 3.0) 起已弃用,并从 GLSL 1.40 及更高版本中删除。
attribute
限定符实际上等同于顶点着色器中的输入限定符。它不能用于任何其他着色器阶段。不能在接口块中使用。
varying
限定符等效于片段着色器的输入或顶点着色器的输出。它不能用于任何其他着色器阶段。不能在接口块中使用。
【讨论】:
以上是关于GLSL 错误:2001 - 此错误代码是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
“进程已分叉,您无法安全地使用此 CoreFoundation 功能。您必须执行()。”是啥意思?错误是啥意思?
在此错误消息中“直接在 useEffect 中移动此变量”是啥意思?