我有一个OpenGL 3.0应用程序,当与Windows一起使用时可以很好地运行。我的着色器程序都以
开头#version 130 core\n
现在,当我在OpenGL 3.0 Mesa 18.0.5上使用Linux时,这些着色器的编译将失败,并显示错误消息
Vertex shader failed: 0:1(10): error: illegal text following version number
这里可能是什么问题?绝对是OpenGL 3.0应该支持GLSL 1.3-它抱怨什么非法文本?
答案 0 :(得分:4)
#version 130 core
此版本号仅不存在。 OpenGL 3.2(以及GLSL 1.50)中引入了 core 和 compatibility 等OpenGL配置文件。
GLSL 1.30(从OpenGL 3.0开始)的正确版本指令只是
#version 130
请参见GLSL 1.30 Specification的“ 3.3预处理程序”部分:
着色器应声明其编写语言的版本。着色器的语言版本 写入由
指定#version number
其中数字必须是语言的一种版本,遵循与以上
__VERSION__
相同的约定。 使用该语言的1.30版的任何着色器都需要伪指令#version 130
。任何 表示编译器不支持的语言版本的数字将导致错误 生成。