2012-01-15 15 views
23

Parece que no puedo encontrar una respuesta clara sobre esto, a pesar de las horas de búsqueda en Google. ¿Alguien puede 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? ¿Debo agregar bibliotecas o algo?¿Qué versiones de GLSL puedo usar en OpenGL ES 2.0?

Respuesta

10

en realidad no tiene que agregar ninguna biblioteca, 140 es demasiado nuevo para Kindle Fire. Elimine la especificación de la versión o disminuya hasta que el sombreador compile. 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 utilizando glGetString() para obtener la versión de GLSL compatible con su dispositivo (garantizado que al menos 100 - ES 2.0 es el primero con un lenguaje de sombreado).

Además, como lo mencionaron los otros, OpenGL ES GLSL no es del mismo lenguaje que OpenGL ES (pensé que era 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/no GLSL de ES, y utilizando estos es posible obtener la funcionalidad ES en un entorno que no sea ES contexto.

+3

Y pensé que 140 era bastante viejo. :( –

+5

Realmente no responde la pregunta. Si algo admite OpenGL ES 2.0 - ¿Qué versión de GLSL admite? (Al menos, como mínimo, quiero decir). – BrainSlugs83

+0

@ BrainSlugs83: Si algo admite OpenGL ES 2.0, está garantizado para admitir GLSL ES 100. Hay mucha confusión al comparar estos números tristemente, ya que las personas ven la directiva '#version ...' e inmediatamente piensan que las manzanas (GLSL de escritorio) son de alguna manera comparables a las naranjas (GLSL incrustadas) Son similares en muchos aspectos, pero divergentes en muchos más (y la numeración de las versiones es un área donde divergen drásticamente). Eche un vistazo a: http://www.opengl.org/registry/gles/ - si mira debajo el encabezado "OpenGL ES 2.0 Specific", que le indica la versión de GLSL ES asociada. –

30

El OpenGL ES 2.0 spec se refiere a GLSL ES, que no es lo mismo que GLSL.

La especificación GLSL ES especificación dice:

Esta versión del lenguaje se basa en la versión 1.10 del GLSL escritorio. Sin embargo, incluye una serie de características que están en la versión 1.20 pero no 1.10.

Revise la especificación para ver lo que es compatible.

+4

Aparentemente soy horrible en googlear. Bueno. –

+0

(lo siento, no puedo evitar reírme de su comentario) –

+0

Vale la pena agregar que las especificaciones de OpenGL ES 2.0 indican que es compatible con GLSL ES 1.0 como mínimo. –

14

OpenGL ES no es OpenGL, por lo que el lenguaje de sombreado de OpenGL ES no es el lenguaje de sombreado de OpenGL. Son similar, pero no son lo mismo. Por lo tanto, no hay una versión de escritorio GLSL que coincida con la versión de GLSL ES.

Cuestiones relacionadas