Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

на самом деле вам не нужно добавлять какие-либо библиотеки, 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, где сопоставление языков ESLS и ES-GLSL и используя их, можно получить ES-подобные функции в контексте, отличном от ES.

Ответ 2

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

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

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

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

Ответ 3

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