Указание версии GLSL приводит к синтаксической ошибке при использовании LWJGL. Я не пытался воспроизвести эту проблему вне LWJGL. Это происходит на нескольких компьютерах Mac под управлением Lion.
Я добился того, что вершинные и фрагментные шейдеры работают без использования #version
. Но я собираюсь использовать функцию texture
, которая, похоже, требует директивы #version
.
Вот простейший неудачный пример:
#version 120
void main() {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
Компиляция этого фрагментного шейдера и вызов glGetShaderInfoLog
дает такую ошибку:
ERROR: 0:1: '' : syntax error #version
Замена 120
на что-либо другое, например 110
, также дает ошибку. Любопытно, однако, что если я использую 130 или выше, это дает ту же ошибку плюс жалобу на то, что версия не поддерживается. (Я знаю, что в моей системе нет GLSL 1.3, но все равно странно, что эта ошибка появляется, когда компилятор ведет себя так, будто не понимает тег версии)
Я на Mac с ATI Radeon HD 4670. GL_VERSION
- 2.1 ATI-7.12.9
и GL_SHADING_LANGUAGE_VERSION
- 1.20
.
Учитывая это, я не вижу причин, по которым GLSL 1.20 должен быть недоступен. И мне очень странно, что он говорит #version
- это синтаксическая ошибка, а не говорит что-то о неподдерживаемой версии GLSL.