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

Can not compile shaders with Linux/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 - 它抱怨什么非法文本?

#version 130 core

这个版本号根本不存在corecompatibility 等 OpenGL 配置文件与 GLSL 1.50 一起在 OpenGL 3.2 中引入。

GLSL 1.30(来自 OpenGL 3.0)的正确版本指令只是

#version 130

参见 GLSL 1.30 Specification 的“3.3 预处理器”部分:

Shaders should declare the version of the language they are written to. The language version a shader is written to is specified by

#version number

where number must be a version of the language, following the same convention as __VERSION__ above. The directive #version 130 is required in any shader that uses version 1.30 of the language. Any number representing a version of the language a compiler does not support will cause an error to be generated.