【问题标题】:GLSL Compatibility IssuesGLSL 兼容性问题
【发布时间】:2012-11-17 14:31:02
【问题描述】:

我一直在使用带有 GLSL 1.3 的 lwjgl 在我的笔记本电脑上开发一个项目。我的着色器在我的笔记本电脑上编译得很好,但是,当我试图在我的桌面上编译具有较新显卡的相同着色器时,我收到一个错误,指出着色器无法编译,因为着色器中存在错误。但是,着色器日志不会输出任何错误。我认为 GLSL 与其自身向后兼容。

GL11.glGetString(GL20.GL_SHADING_LANGUAGE_VERSION);

返回

3.30 NVIDIA via Cg compiler

我假设它与标准 GLSL 3.30 相同。这是一个示例 vert 和 frag 着色器,适用于我的笔记本电脑,而不是我的台式机。

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;   
}

【问题讨论】:

  • "但是,着色器日志没有输出任何错误。" 您是否正在检查所有的着色器日志?着色器编译日志程序链接日志?
  • 我只是使用 glGetShaderInfoLog() 输出:无法编译着色器,它们无效。无法编译着色器:5

标签: opengl glsl shader lwjgl


【解决方案1】:

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

【讨论】:

  • 假装他的着色器是 更高 版本比它有任何帮助吗?
  • 旧版本 = 更多限制 = 更多错误。是的 - 很天真,但如果...... :)
猜你喜欢
  • 1970-01-01
  • 2016-08-28
  • 2014-02-12
  • 2011-10-04
  • 2013-03-28
  • 2019-10-03
  • 2018-06-02
  • 2012-03-28
相关资源
最近更新 更多