java - ¿Qué versiones de GLSL puedo usar en OpenGL ES 2.0?
android opengl-es (3)
La especificación de OpenGL ES 2.0 se refiere a GLSL ES , que no es lo mismo que GLSL.
La especificación GLSL ES spec dice:
Esta versión del lenguaje se basa en la versión 1.10 del escritorio GLSL. Sin embargo, incluye una serie de características que están en la versión 1.20 pero no en la 1.10.
Echa un vistazo a las especificaciones para ver qué es compatible.
Parece que no puedo encontrar una respuesta clara a esto, a pesar de las horas de googlear. ¿Puede alguien simplemente decirme qué está pasando? Recibo errores que dicen cosas como "la versión 140 no es compatible". ¿Es este mi dispositivo (Kindle Fire) o GL ES 2.0? ¿Necesito agregar bibliotecas o algo?
OpenGL ES no es OpenGL, de modo similar, el lenguaje de sombreado de OpenGL ES no es el lenguaje de sombreado de OpenGL. Son similares , pero no son lo mismo. Por lo tanto, no hay una versión de GLSL de escritorio que coincida con la versión de GLSL ES.
en realidad no es necesario agregar bibliotecas, 140 es demasiado nuevo para Kindle Fire. Quite la especificación de la versión o disminúyala hasta que se compile el shader. Es posible que deba corregir algunos otros errores en el sombreado, ya que las versiones individuales del idioma tienen algunas diferencias.
También puede consultar GL_SHADING_LANGUAGE_VERSION
usando glGetString()
para obtener una versión de GLSL que sea compatible con su dispositivo (se garantiza que al menos 100, ES 2.0 es la primera con un idioma de sombreado).
Además, como lo mencionaron los demás, OpenGL ES GLSL no es el mismo lenguaje que OpenGL ES (pensé que era bastante obvio, OpenGL ES no es OpenGL), por lo que los números de versión no coincidirán. Sin embargo, hay GL_ARB_ES2_compatibility y sus extensiones a ES3, ES3.1 y ES3.2, donde se describe el mapeo de los lenguajes ES / non-ES GLSL, y utilizando estos es posible obtener una funcionalidad similar a ES en un no-ES contexto.