Поддерживается ли встроенная переменная, такая как gl_Normal gl_Vertex, GLSL в OpenGL ES 2.0? - PullRequest
3 голосов
/ 17 февраля 2012

Я новичок в OpenGL ES2.0 и GLSL, и я хочу использовать шейдеры для обработки изображений.Когда я кодировал в Xcode, я использовал встроенные переменные, такие как gl_Normal, gl_Vertex напрямую и не объявлял их в начале шейдеров.Наконец, я получил сообщение об ошибке:

Использование необъявленного идентификатора gl_Normal.почему?

1 Ответ

5 голосов
/ 17 февраля 2012

Использование необъявленного идентификатора gl_Normal.почему?

В OpenGL-ES 2 и по его следам ядро ​​OpenGL-3 больше не содержит предопределенных входных переменных шейдера.OpenGL-4 покончил с предопределенными шейдерными выходами.

Вместо этого вы должны определить свои собственные входы и выходы.Каждой входной или выходной переменной назначается так называемое местоположение.Либо неявно с помощью OpenGL, и может быть извлечено с помощью glGetAttribLocation, либо явно программистом, использующим атрибут квалификатора хранения location или функцию glBindAttribLocation.Выходы аналогично назначаются местами данных фрагмента .

...