GLSL #version дает синтаксическую ошибку (LWJGL на Mac)

Указание версии 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.

8
задан rlkw1024 17 December 2011 в 00:13
поделиться