Какие версии GLSL можно использовать в OpenGL ES 2.0?

Кажется, я не могу найти четкого ответа на это, несмотря на часы работы в Интернете. Может ли кто-нибудь сказать мне, что происходит? Я получаю ошибки, говоря такие вещи: «Версия 140 не поддерживается». Это мое устройство (Kindle Fire) или GL ES 2.0? Нужно ли добавлять библиотеки или что-то еще?

Вам фактически не нужно добавлять какие-либо библиотеки, 140 слишком ново для Kindle Fire. Либо удалите спецификацию версии, либо уменьшите ее до компиляции шейдера. Возможно, вам придется исправить некоторые другие ошибки в шейдере, поскольку отдельные версии языка имеют некоторые отличия.

Вы также можете запросить GL_SHADING_LANGUAGE_VERSION с помощью glGetString() чтобы получить версию GLSL, которая поддерживается на вашем устройстве (как минимум, 100). ES 2.0 является первым с языком затенения).

Кроме того, как упоминалось другими, OpenGL ES GLSL – это не тот же язык, что и OpenGL ES (я думал, что это довольно очевидно, OpenGL ES не OpenGL), поэтому номера версий не совпадают. Тем не менее, GL_ARB_ES2_compatibility и его расширения для ES3, ES3.1 и ES3.2, где описано сопоставление языков ES / ES-GLSL ES / non-ES, и используя их, можно получить ES-подобные функции на не-ES контекст.

Спецификация OpenGL ES 2.0 относится к GLSL ES , которая не совпадает с GLSL.

Спецификация GLSL ES spec говорит:

Эта версия языка основана на версии 1.10 рабочего стола GLSL. Однако он включает в себя ряд функций, которые находятся в версии 1.20, но не 1.10.

Проверьте спецификацию, чтобы узнать, что поддерживается.

OpenGL ES не является OpenGL, поэтому аналогично, шейдерный язык OpenGL ES не является шейдерным языком OpenGL. Они похожи , но они не то же самое. Таким образом, нет версии GLSL для настольных компьютеров, которая соответствует версии GLSL ES.