我有一个OpenGL 3.0应用程序,当它与Windows一起使用时,它可以很好地工作。我的着色器程序都是从开始的
#version 130 coren
现在,当我使用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——它抱怨的是什么非法文本?
#version 130 core
此版本号根本不存在。OpenGL 3.2中引入了OpenGL配置文件,如core和兼容性,以及GLSL 1.50。
GLSL 1.30(来自OpenGL 3.0(的正确版本指令只是
#version 130
参见GLSL 1.30规范的"3.3预处理器"部分:
着色器应该声明它们被写入的语言版本。着色器的语言版本写入由指定
#version number
其中数字必须是语言的一个版本,遵循与上述
__VERSION__
相同的约定。指令#version 130
在任何使用该语言1.30版本的着色器中都是必需的。任何表示编译器不支持的语言版本的数字将导致错误生成。