2012-11-17 79 views
2

我一直在使用帶有GLSL 1.3的lwjgl在我的筆記本電腦上工作。我的着色器在我的筆記本電腦上編譯得很好,但是,當我試圖在我的桌面上編譯具有較新圖形卡的相同着色器時,出現錯誤,指出着色器無法編譯,因爲着色器出現錯誤。但是,着色器日誌不會輸出任何錯誤。我認爲GLSL向後兼容自己。GLSL兼容性問題

GL11.glGetString(GL20.GL_SHADING_LANGUAGE_VERSION); 

回報

3.30 NVIDIA via Cg compiler 

這我假設是一樣的標準GLSL 3.30。這是一個示例垂直和碎片着色器,適用於我的筆記本電腦而不是我的桌面。

basic_color.vert

#version 130 

uniform mat4 projection_matrix; 
uniform mat4 modelview_matrix; 

in vec3 a_Vertex; 
in vec4 a_Color; 
out vec4 color; 

void main(void) 
{ 
    vec4 pos = modelview_matrix * vec4(a_Vertex, 1.0); 
    gl_Position = projection_matrix * pos; 
    color = a_Color; 
} 

basic_color.frag

#version 130 

in vec4 color; 
out vec4 outColor; 

void main(void) 
{ 
    outColor = color; 
} 
+0

「*不過,着色器日誌不會輸出任何錯誤。*「您是否正在檢查*所有*着色器日誌?着色器編譯日誌*和*程序鏈接日誌? –

+0

我只是使用glGetShaderInfoLog()輸出:無法編譯着色器,它們是無效的。無法編譯着色器:5 –

回答

0

嘗試#version 330 compatibility#version 330或使用不同和gl_FragColor,GL_POSITION而不是在\出

+0

怎麼能假裝他的着色器是一個*更高版本,而不是以任何方式幫助? –

+0

舊版本=更多限制=更多錯誤。是的 - 很天真,但如果...... :) – JAre