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

时间:2013-04-01 06:41:06

标签: android opengl-es opengl-es-2.0 vertex-shader

这是我可以做的最好的获取调试错误。

snapshot Link for a larger image version

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

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

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

如果它告诉我顶点着色器代码的哪一行是错误的,或者指向一个好方向的东西,我会更喜欢它。有了这个模糊的描述,我只能向你寻求帮助。

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

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()没有调试信息。

glGetShaderInfo() gives nothing. Larger version.

更多信息:

String is empty.

编辑2:

尝试了glGetShader()和glGetShaderInfo()的组合,但仍然没有运气。

Mixed glGetShader() and glGetShaderInfo() outputs. Larger version.

1 个答案:

答案 0 :(得分:0)

发现错误!

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

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

我很遗憾浪费每个人的时间。