Android OpenGL ES 2.0: Invalid Vertex Shader. Link Cannot Proceed
这是获得调试错误的最佳方法。
更大图像版本的链接
如你所见,glGetProgramInfoLog()返回如下语句:
“无效的顶点着色器。链接无法继续。”
Eclipse IDE 中的黄线是程序刚刚通过单步执行执行的代码行。带有箭头的绿线是程序将执行的位置。
如果它能告诉我我的顶点着色器代码在哪一行出错,或者能告诉我一个好的方向,我会更喜欢它。有了这个模糊的描述,我只能向你寻求帮助。
顶点着色器代码如下所示:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
uniform mat4 u_mvpMatrix;
uniform mat4 u_mvMatrix; uniform vec3 u_lightPosition; attribute vec4 a_position; varying vec4 v_color; void main() { float distance = length(u_lightPosition – modelViewVertex); v_color = a_color * diffuse; gl_Position = mvpMatrix * a_position; |
我不知道我哪里做错了。你能帮我找到吗?如果您需要更多信息,我会添加它们。提前致谢。
编辑 1:
glGetShaderInfo() 没有调试信息。
更大的版本。
更多信息:
编辑 2:
尝试了glGetShader()和glGetShaderInfo()的组合,还是不行。
更大的版本。
- 你检查着色器编译成功了吗?发布那部分代码。
- 它已经发布了。它已经包含在问题中。它编译得很好。
- 是因为 Imgur 图像的分辨率太低吗?
- 它不存在,您没有检查着色器是否编译,至少对于粘贴在这里的代码。使用 glGetShader 和 glGetShaderInfoLog 检查编译状态和编译信息日志。
- 更新。请看一下。
发现错误!
一直以来,我都在编辑错误的源文件!
一直保存/检查/保存/检查…,我没有意识到上面显示的源代码不包含在项目中,因此程序说明我的顶点着色器无效,是因为编译器正在使用空顶点着色器编译源代码,而不是新修改的版本(这是我一直在编辑的源代码)。
很抱歉浪费大家的时间。
来源:https://www.codenong.com/15738841/