2012-11-17 47 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