Android OpenGL ES 2.0:顶点着色器无效。链接无法继续

Android OpenGL ES 2.0:顶点着色器无效。链接无法继续,android,opengl-es,opengl-es-2.0,vertex-shader,Android,Opengl Es,Opengl Es 2.0,Vertex Shader,这是获取调试错误的最好方法 如您所见,glGetProgramInfoLog()返回以下语句: “顶点着色器无效。链接无法继续。” EclipseIDE中的黄线是程序刚刚通过单步执行的代码行。带箭头的绿线是程序将执行的位置 我更希望它能告诉我顶点着色器代码在哪一行出错,或者能告诉我一个好的方向。由于这种模糊的描述,我只能请你帮忙 顶点着色器代码如下所示: uniform mat4 u_mvpMatrix; uniform mat4 u_mvMatrix; uniform vec3 u_lig

这是获取调试错误的最好方法

如您所见,glGetProgramInfoLog()返回以下语句:

“顶点着色器无效。链接无法继续。”

EclipseIDE中的黄线是程序刚刚通过单步执行的代码行。带箭头的绿线是程序将执行的位置

我更希望它能告诉我顶点着色器代码在哪一行出错,或者能告诉我一个好的方向。由于这种模糊的描述,我只能请你帮忙

顶点着色器代码如下所示:

uniform mat4 u_mvpMatrix;
uniform mat4 u_mvMatrix;
uniform vec3 u_lightPosition;

attribute vec4 a_position;
attribute vec4 a_color;
attribute vec3 a_normal;

varying vec4 v_color;

void main() {
    vec3 modelViewVertex = vec3(u_mvMatrix * a_position);
    vec3 modelViewNormal = vec3(u_mvMatrix * vec4(a_normal, 0.0));

    float distance = length(u_lightPosition - modelViewVertex);
    vec3 lightVector = normalize(u_lightPosition - modelViewVertex);
    float diffuse = max(dot(modelViewNormal, lightVector), 0.1);
    diffuse = diffuse * (1.0 / (0.25 * distance * distance));

    v_color = a_color * diffuse;

    gl_Position = mvpMatrix * a_position;
}
我不知道我哪里做错了。你能帮我找到它吗?如果你需要更多信息,我会添加它们。提前谢谢

编辑1:

glGetShaderInfo()中没有调试信息

更多信息:

编辑2:

尝试了glGetShader()和glGetShaderInfo()的组合,但仍然没有成功

找到了错误

在这段时间里,我编辑了错误的源文件

一直保存/检查/保存/检查…,我没有意识到上面显示的源代码没有包含在项目中,因此声明我的顶点着色器无效的程序是因为编译器使用空顶点着色器编译源代码,而不是新修改的版本(这是我一直在编辑的源代码)


很抱歉浪费大家的时间。

你检查过着色器是否编译成功了吗?发布那部分代码。它已经发布了。它已经包含在问题中。它编译得很好。是因为Imgur图像的分辨率太低吗?它不在那里,你没有检查着色器是否编译,至少对于粘贴在这里的代码。U使用glGetShader和glGetShaderInfoLog检查编译状态和编译infolog.Updated。请查看。