【发布时间】:2012-01-22 08:28:22
【问题描述】:
在使用 LWJGL 时,指定 GLSL 版本会导致语法错误。我没有尝试在 LWJGL 之外重现这个问题。这发生在多台运行 Lion 的 Mac 上。
我已经让顶点着色器和片段着色器在不使用#version 的情况下工作。但我即将使用texture 函数,这似乎需要#version 指令。
这是最简单的失败示例:
#version 120
void main() {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
编译此片段着色器并调用glGetShaderInfoLog 会出现此错误:
ERROR: 0:1: '' : syntax error #version
将120 替换为其他任何内容,例如110,也会产生错误。不过,奇怪的是,如果我使用 130 或更高版本,它会给出相同的错误以及对不支持的版本的抱怨。 (我知道我的系统没有 GLSL 1.3,但是当编译器表现得好像它不理解版本标签时显示此错误仍然很奇怪。)
我使用的是带有 ATI Radeon HD 4670 的 Mac。GL_VERSION 是 2.1 ATI-7.12.9,GL_SHADING_LANGUAGE_VERSION 是 1.20。
鉴于此,我看不出 GLSL 1.20 不可用的任何原因。对我来说真的很奇怪,它说 #version 是一个语法错误,而不是说关于不受支持的 GLSL 版本。
【问题讨论】:
-
你的着色器加载代码在哪里?
-
一旦我有互联网,我就可以把它粘贴进去。 (现在使用我的手机。)thab 源代码会有帮助吗?