GLSL 兼容性问题



我一直在笔记本电脑上使用 lwjgl 和 GLSL 1.3 进行一个项目。我的着色器在我的笔记本电脑上编译得很好,但是,当尝试在具有较新显卡的桌面上编译相同的着色器时,我收到一个错误,指出着色器无法编译,因为着色器中存在错误。但是,着色器日志不会输出任何错误。我认为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.碎片

#version 130
in vec4 color;
out vec4 outColor;
void main(void) 
{
    outColor = color;   
}

尝试#version 330 compatibility#version 330或使用变化和gl_FragColor,gl_Position而不是in\out

最新更新