Не могу скомпилировать шейдеры с Linux / Mesa - PullRequest
0 голосов
/ 29 октября 2018

У меня есть приложение OpenGL 3.0, которое хорошо работает, когда оно используется с Windows. Все мои шейдерные программы начинаются с

#version 130 core\n

Теперь, когда я перехожу на Linux с OpenGL 3.0 Mesa 18.0.5, компиляция этих шейдеров завершается неудачно с сообщением об ошибке

Vertex shader failed: 0:1(10): error: illegal text following version number

В чем здесь проблема? Это определенно OpenGL 3.0, который должен поддерживать GLSL 1.3 - на какой незаконный текст он жалуется?

1 Ответ

0 голосов
/ 29 октября 2018
#version 130 core

Этот номер версии просто не существует . Профили OpenGL, такие как core и совместимость , были представлены в OpenGL 3.2 вместе с GLSL 1.50.

Правильная версия директивы для GLSL 1.30 (из OpenGL 3.0) просто

#version 130

см. Раздел «3.3 Препроцессор» спецификации GLSL 1.30 :

Шейдеры должны объявить версию языка, на котором они написаны. Языковая версия шейдера есть записано, указано

#version number

где число должно быть версией языка в соответствии с тем же соглашением, что и __VERSION__ выше. Директива #version 130 требуется для любого шейдера, который использует версию 1.30 языка. любой число, представляющее версию языка, не поддерживаемого компилятором, приведет к ошибке генерируется.

...