2013-04-01 116 views
0

這是我能夠獲得調試錯誤的最佳選擇。Android OpenGL ES 2.0:頂點着色器無效。鏈接無法繼續

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.

+0

你是否檢查着色器編譯成功?發佈代碼的那一部分。 –

+0

已經發布。它已經包含在問題中。它編譯得很好。 –

+0

是否因爲Imgur圖像太低? –

回答

0

發現錯誤!

在這段時間裏,我正在編輯錯誤的源文件!

保留/檢查/保存/檢查...,我沒有意識到上面顯示的源代碼不包含在項目中,因此程序指出我的頂點着色器是無效的,是因爲編譯器使用空的頂點着色器編譯源代碼,而不是新修改的版本(這是我整個編輯的源代碼)。

我很抱歉浪費大家的時間。