无法使用Linux / Mesa编译着色器

时间:2018-10-29 16:26:57

标签: linux opengl glsl opengl-3 mesa

我有一个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-它抱怨什么非法文本?

1 个答案:

答案 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。任何   表示编译器不支持的语言版本的数字将导致错误   生成。