Какие версии GLSL я могу использовать в OpenGL ES 2.0? - PullRequest
23 голосов
/ 15 января 2012

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

Ответы [ 3 ]

32 голосов
/ 15 января 2012

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

В спецификации GLSL ES указано:

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

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

14 голосов
/ 15 января 2012

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

11 голосов
/ 15 января 2012

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

...