无法使用 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
这个版本号根本不存在。 core 和 compatibility 等 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.
我有一个 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
这个版本号根本不存在。 core 和 compatibility 等 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.