¿Cuál es la diferencia entre OpenGL ES y OpenGL?

Respuestas:

13

OpenGL ES (Embedded Systems) es una versión simplificada de OpenGL. Hay muchas diferencias entre esos dos y si desea profundizar en los detalles, puede leer este documento de 128 especificaciones. Pero ES es un subconjunto de OpenGL, por lo que todas las aplicaciones ES funcionan en sistemas que no son ES, pero no al contrario.

No hay un lugar donde pueda definir fácilmente qué está en ES y qué no. Incluso una definición es "OpenGL-ES es como OpenGL, pero sin muchas cosas. Por ejemplo, no hay glBegin o glEnd".

Ólafur Waage
fuente
55
ES no es un subconjunto directo de OpenGL, por lo que su afirmación de que todas las aplicaciones ES funcionan en sistemas que no son ES no es cierta.
Jari Komppa
55
@JariKomppa: es a partir de OpenGL 4.1.
DMan
Un buen resumen de los cambios / diferencia sería bueno.
bobobobo
19

Por desgracia, ninguna de las respuestas hasta ahora es completa y totalmente correcta. Realmente, OpenGL-ES hace dos cosas que OpenGL no hace:

1) se despoja y luego extiende las API de OpenGL para que sea adecuado para una plataforma móvil. Es decir, primero eliminan las API y las características que realmente no necesita, y son una carga para las implementaciones móviles, como la representación de polígonos o el uso de listas de visualización. Luego hace algunas extensiones juiciosas para que sea más útil para la plataforma móvil. Sin embargo, ni siquiera puedo recordar un ejemplo de esto.

2) proporciona la interfaz para el administrador de ventanas (y, por lo tanto, el hardware de gráficos nativo) de la plataforma móvil. Esta parte de OpenGL-ES, conocida como EGL, se parece mucho a GLUT en el escritorio. Excepto que no tiene ninguno de esos métodos de conveniencia que no son estrictamente necesarios para esa interfaz. Por lo tanto, no hay API para dibujar poliedros o esferas (como en GLUT). Pero hay, por ejemplo, API que corresponden a init () de GLUT y a devoluciones de llamada DisplayFunc () y ReshapeFunc ().

usuario1800
fuente
2
EGL no es parte de OpenGL ES. Es su propia cosa separada. Ver las especificaciones. No es una parte obligatoria de OpenGL ES y apenas se menciona, excepto para decir que podría existir en su sistema, pero configurar una ventana, etc., está fuera del alcance de la especificación de OpenGL ES
gman
7

Hay dos versiones de OpenGL ES disponibles en Android:

  • OpenGL ES 1.x (1.0 o 1.1): un subconjunto de OpenGL 1.5 sin comandos inmediatos
    • sin glBegin / glEnd
    • sin soporte Quad o Polygon
  • OpenGL ES 2.0: un subconjunto de OpenGL 3.X sin canalización fija
    • sombreadores de vértices
    • sombreadores de fragmentos
    • los sombreadores de geometría no están disponibles

¡Advertencia, OpenGL ES 2.0 no es compatible con OpenGL ES 1.X!

Casi todos los teléfonos Android tienen GPU OpenGL 1.X y la mayoría tiene 2.0. OpenGL ES 2.0 solo está disponible con Android 2.xo posterior.

Ellis
fuente