Указание версии 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 или выше, это выдает ту же ошибку, а также жалобу на версию, не поддерживаемую beig.(Я знаю, что в моей системе нет 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.