0

这是我获得调试错误所能做的最好的事情。

快照 更大图像版本的链接

可以看到,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() 什么也没给出。 更大的版本。

更多信息:

字符串为空。

编辑2:

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

混合 glGetShader() 和 glGetShaderInfo() 输出。 更大的版本。

4

1 回答 1

0

发现错误!

一直以来,我都在编辑错误的源文件!

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

很抱歉浪费大家的时间。

于 2013-04-01T15:35:04.767 回答