Articulo de referencia

OpenGL ES

{{cite web |url=https://www.khronos.org/legal/trademarks/ |title=Khronos Logos, Trademarks, and Guidelines |publisher=Khronos |access-date=June 18, 2026 }} "},"website":{"wt":"{...

OpenGL para sistemas embebidos ( OpenGL ES o GLES ) es un subconjunto de la interfaz de programación de aplicaciones (API) de renderizado de gráficos por computadora OpenGL para renderizar gráficos 2D y 3D, como los que se usan en los videojuegos, generalmente acelerados por hardware mediante una unidad de procesamiento gráfico (GPU). Está diseñado para sistemas embebidos como teléfonos inteligentes, tabletas, consolas de videojuegos y PDA. OpenGL ES es la API de gráficos 3D más utilizada en la historia.

La API es multiplataforma y compatible con varios lenguajes de programación. OpenGL ES está gestionado por el consorcio tecnológico sin ánimo de lucro Khronos Group . Vulkan , una API de última generación de Khronos, está diseñada para ofrecer controladores de alto rendimiento más sencillos para dispositivos móviles y de escritorio.

Versiones

Actualmente existen varias versiones de la especificación OpenGL ES. OpenGL ES 1.0 se basa en la especificación OpenGL 1.3, OpenGL ES 1.1 se define en relación con la especificación OpenGL 1.5 y OpenGL ES 2.0 se define en relación con la especificación OpenGL 2.0. Esto significa que, por ejemplo, una aplicación escrita para OpenGL ES 1.0 debería ser fácilmente portable a la versión de escritorio OpenGL 1.3; dado que OpenGL ES es una versión simplificada de la API, lo contrario puede o no ser cierto, dependiendo de las características específicas utilizadas.

OpenGL ES viene con su propia versión de lenguaje de sombreado (OpenGL ES SL), que es diferente de OpenGL SL . [ 2 ]

Las versiones 1.0 y 1.1 tienen perfiles comunes (CM) y comunes ligeros (CL), con la diferencia de que el perfil común ligero solo admite tipos de datos de punto fijo en lugar de punto flotante , mientras que el perfil común admite ambos.

OpenGL ES 1.0

OpenGL ES 1.0 se lanzó públicamente el 28 de julio de 2003. OpenGL ES 1.0 se basa en la API original de OpenGL 1.3, con gran parte de la funcionalidad eliminada y algunas añadidas. Una diferencia significativa entre OpenGL y OpenGL ES es que OpenGL ES eliminó la necesidad de entrecomillar las llamadas a la biblioteca OpenGL con glBeginy glEnd. Otras diferencias significativas son que la semántica de llamada para las funciones de renderizado primitivas se modificó a favor de las matrices de vértices, y se introdujeron tipos de datos de punto fijo para las coordenadas de los vértices. También se añadieron atributos para mejorar la compatibilidad con las capacidades computacionales de los procesadores integrados, que a menudo carecen de una unidad de punto flotante (FPU). Muchas otras funciones y primitivas de renderizado se eliminaron en la versión 1.0 para producir una interfaz ligera, incluyendo:

  • Primitivas de renderizado de cuadriláteros y polígonos;
  • texgen, punteado de línea y polígono;
  • No se admiten el modo poligonal ni la representación poligonal con suavizado de bordes, aunque sigue siendo posible la representación mediante muestreo múltiple (en lugar de fragmentos de borde alfa);
  • ARB_ImageNo se admiten operaciones con la clase de píxeles, mapas de bits ni texturas 3D;
  • Se eliminan varios de los modos de dibujo más técnicos, incluidos el búfer frontal y el búfer de acumulación;
  • No se permiten operaciones de mapa de bits para copiar píxeles individualmente, evaluadores ni operaciones de selección de usuario;
  • Se eliminan las listas de visualización y los comentarios, así como las operaciones de inserción y extracción de atributos de estado;
  • Además, se eliminaron algunos parámetros del material, incluidos los parámetros de la cara posterior y los planos de recorte definidos por el usuario.

La versión actual es 1.0.0.2. [ 3 ]

OpenGL ES 1.1

OpenGL ES 1.1 añadió características como soporte obligatorio para multitextura, mejor soporte para multitextura (incluyendo combinadores y operaciones de textura de producto escalar ), generación automática de mipmaps , objetos de búfer de vértices , consultas de estado, planos de recorte de usuario y mayor control sobre la representación de puntos. [ 4 ] La versión actual es 1.1.12. [ 5 ]

OpenGL ES 2.0

OpenGL ES 2.0 se lanzó públicamente en marzo de 2007. [ 7 ] Se basa aproximadamente en OpenGL 2.0, pero elimina la mayor parte de la canalización de renderizado de función fija en favor de una programable en un movimiento similar a la transición de OpenGL 3.0 a 3.1. [ 8 ] El flujo de control en los sombreadores generalmente se limita a ramificaciones hacia adelante y a bucles donde el número máximo de iteraciones se puede determinar fácilmente en tiempo de compilación. [ 9 ] Casi todas las características de renderizado de la etapa de transformación e iluminación, como la especificación de materiales y parámetros de luz anteriormente especificados por la API de función fija, son reemplazadas por sombreadores escritos por el programador gráfico. Como resultado, OpenGL ES 2.0 no es retrocompatible con OpenGL ES 1.1. Algunas incompatibilidades entre la versión de escritorio de OpenGL y OpenGL ES 2.0 persistieron hasta OpenGL 4.1, que agregó la GL_ARB_ES2_compatibilityextensión. [ 10 ] La versión actual es 2.0.25. [ 11 ]

El Grupo Khronos ha escrito un documento que describe las diferencias entre OpenGL ES 2.0 y OpenGL 2.0 ordinario. [ 12 ]

OpenGL ES 3.0

La especificación OpenGL ES 3.0 [ 14 ] se publicó públicamente en agosto de 2012. [ 15 ] Es retrocompatible con OpenGL ES 2.0 y parcialmente compatible con WebGL 2.0, [ 16 ] ya que WebGL 2.0 fue diseñado para tener un alto grado de interoperabilidad con OpenGL ES 3.0. [ 17 ] La versión actual del estándar OpenGL ES 3.0 es la 3.0.6, publicada en noviembre de 2019. [ 18 ]

Las nuevas funcionalidades de la especificación OpenGL ES 3.0 incluyen:

OpenGL ES 3.1

La especificación OpenGL ES 3.1 [ 20 ] se publicó públicamente en marzo de 2014. La nueva funcionalidad de OpenGL ES 3.1 incluye: [ 21 ]

  • Shaders de cómputo
  • sombreadores de vértices y fragmentos independientes
  • Comandos de dibujo indirecto

OpenGL ES 3.1 es compatible con versiones anteriores de OpenGL ES 2.0 y 3.0, lo que permite a las aplicaciones incorporar nuevas características de forma incremental. La versión actual es 3.1 (noviembre de 2016). [ 22 ]

OpenGL ES 3.2

La especificación OpenGL ES 3.2 [ 23 ] se publicó públicamente en agosto de 2015. Las nuevas capacidades de OpenGL ES 3.2 incluyen:

  • Shaders de geometría y teselación para procesar eficientemente escenas complejas en la GPU.
  • Objetivos de renderizado de punto flotante para una mayor flexibilidad en operaciones de cálculo de alta precisión.
  • Compresión ASTC para reducir el consumo de memoria y el ancho de banda utilizados para procesar texturas.
  • Mezcla mejorada para composiciones sofisticadas y manejo de múltiples colores.
  • Destinos de textura avanzados, como búferes de textura, matrices 2D de muestreo múltiple y matrices de mapas cúbicos.
  • Funciones de depuración y robustez para facilitar el desarrollo de código y garantizar una ejecución segura.

El estado actual es 3.2.6 julio 2019. [ 24 ] [ 25 ]

Se están desarrollando o están en desarrollo algunas extensiones adicionales en Mesa para la próxima versión de OpenGL ES (ver Mesamatrix).

La API de próxima generación es Vulkan. [ 26 ]

Uso de la plataforma

Para ver la lista completa de empresas y sus productos conformes, haga clic aquí.

OpenGL ES 1.0

OpenGL ES 1.0 agregó una API oficial de gráficos 3D a los sistemas operativos Android [ 27 ] y Symbian OS v8.0a [ 28 ] [ 29 ] , así como a QNX [ 30 ]. También es compatible con PlayStation 3 como una de sus API de gráficos oficiales [ 31 ] (la otra es la biblioteca de bajo nivel libgcm ) con Cg de Nvidia en lugar de GLSL. [ 32 ] PlayStation 3 también incluye varias características de la versión 2.0 de OpenGL ES.

OpenGL ES 1.1

La versión 1.1 de OpenGL ES es compatible con:

OpenGL ES 2.0

Con el apoyo de:

OpenGL ES 3.0

Con el apoyo de:

Compatible con algunas versiones recientes de estas GPU: [ 43 ] [ 44 ]

OpenGL ES 3.1

Compatible con Windows, Linux y Android (desde la versión 5.0) en dispositivos con hardware y controladores adecuados, [ 45 ] incluyendo:

  • Serie Adreno 400 [ 46 ] [ 47 ]
  • Serie Adreno 500 (Mesa 18.1 para Linux y Android)
  • AMD Terascale y arquitectura GCN actual (Windows, Linux (r600, radeonSI))
  • Gráficos Intel HD para la serie Intel Atom Z3700 (Android)
  • Gráficos Intel HD para procesadores Intel Celeron de las series N y J (Android)
  • Gráficos Intel HD para procesadores Intel Pentium de las series N y J (Android)
  • Gráficos Intel HD Haswell y superiores (Linux Mesa: Ivy Bridge anterior casi sin texturizado de plantilla) [ 39 ]
  • Serie Mali T6xx (midgard) en adelante [ 48 ] (Android, Linux)
  • Nvidia GeForce serie 400 en adelante (Windows, Linux)
  • Nvidia Tegra K1 (Android, Linux)
  • Nvidia Tegra X1 (Android)
  • PowerVR Series 6, 6XE, 6XT, 7XE y 7XT (Linux, Android)
  • Serie Vivante GC2000 en adelante (opcional con GC800 y GC1000) [ 49 ]
  • panfrost: Compatibilidad con ARM panfrost (Linux Mesa 22.0)
  • v3d: Controlador para Broadcom VideoCore en Mesa (Linux)
    • Raspberry Pi 4 y 5
  • VIRGL: controlador virtual para máquinas virtuales en 2018 con Mesa 18.1 (Ver Mesamatrix.net)
  • LLVMpipe: controlador de software en Mesa 20.2 (Linux)
  • softpipe: controlador de software en Mesa 20.3 (Linux)
  • Zink: controlador de emulación en Mesa 21.1 (Linux)
  • d3d12: Controlador Linux WSL2 para Microsoft 10+ (Mesa 22.0)
  • Gráficos Apple M1 y M2 en Fedora Asahi Remix (Linux)

Paquete de extensión de Android

El Android Extension Pack (AEP) es un conjunto de extensiones de OpenGL ES 3.1, agrupadas en una sola extensión introducida por Google en 2014. Esto permite que las aplicaciones utilicen todas las características del conjunto de extensiones, comprobando únicamente la presencia de una sola. El AEP se añadió oficialmente a Android Lollipop para proporcionar características adicionales, como la teselación, que no estaban incluidas oficialmente en la revisión GLES 3.1. La actualización de OpenGL ES 3.2 se compone en gran medida de las adiciones del AEP, que ya están presentes en OpenGL de escritorio. [ 50 ]

OpenGL ES 3.2

Uso de OpenGL ES 3.2 en un sistema Linux (con AMDGPU )

OpenGL ES 3.2, que incorpora el Android Extension Pack (AEP), "presenta algunas mejoras con respecto a OpenGL ES 3.1 del año pasado. Ambos utilizan características similares del AEP. Gracias al AEP, el hardware compatible con OpenGL ES 3.2 admitirá la teselación para obtener mayor detalle geométrico, nuevos sombreadores de geometría, compresión de texturas ASTC para un menor consumo de memoria, objetivos de renderizado de punto flotante para procesos de cálculo de alta precisión y nuevas funciones de depuración para desarrolladores. Estas características avanzadas ya se encuentran en la especificación completa de OpenGL 4 del grupo". [ 51 ] [ 52 ]

Compatible con Windows, Linux y Android (desde la versión 6.0 es posible, 7.0+ requiere Vulkan 1.0 y OpenGL ES 3.2) en dispositivos con el hardware y los controladores adecuados, incluidos:

  • Adreno 420 y posteriores (Android, Linux (freedreno))
  • Arquitectura AMD GCN (Windows, Linux (Mesa 18.2 con radeonSI))
  • Gráficos Intel HD Skylake y superiores (Linux) [ 39 ]
  • Mali-T760 y posteriores (Android, Linux)
  • Nvidia GeForce serie 400 (Fermi) y posteriores (Windows, Linux) [ 53 ]
  • VIRGL: controlador virtual para máquinas virtuales en 2018 con Mesa 18.1 (Ver Mesamatrix.net)
  • LLVMpipe: controlador de software en Mesa 20 (Linux)
  • Zink: Controlador de emulación Vulkan en Mesa 21.2 (Linux)

Desuso en las plataformas de Apple

OpenGL ES (y OpenGL) fue descontinuado en los sistemas operativos de Apple en favor de su propia API de gráficos Metal , pero aún funcionaba al menos hasta iOS 12. [ 54 ]

El futuro

Actualmente no hay planes para una nueva versión principal de OpenGL ES, ya que se considera que la adopción de Vulkan la ha desplazado en aplicaciones integradas y móviles. El desarrollo de extensiones para OpenGL ES continúa a partir de 2017. [ 55 ]

Compatibilidad con OpenGL

Se han creado algunas bibliotecas para emular llamadas de OpenGL utilizando GL ES:

Véase también

Referencias

  1. "Logotipos, marcas comerciales y directrices de Khronos" . Khronos . Consultado el 18 de junio de 2026 .
  2. "¿Qué versiones de GLSL puedo usar en OpenGL ES 2.0?" . Stack Overflow.
  3. Blythe, David. "Especificación del perfil OpenGL ES Common/Common-Lite - Versión 1.0.02 (Anotada)" (PDF) . registry.khronos.org . Archivado (PDF) del original el 22 de septiembre de 2024.
  4. "OpenGL ES 1.1+ y ES 2.0" (PDF) . developer.amd.com . GameDevelopers Conference. Archivado del original (PDF) el 24 de febrero de 2021.
  5. Munshi, Aaftab; Leech, Jon (24 de abril de 2008). "Especificación del perfil OpenGL ES Common/Common-Lite - Versión 1.1.12 (Especificación completa)" (PDF) . registry.khronos.org . Archivado (PDF) del original el 31 de diciembre de 2024.
  6. "stack overflow: glGenFramebuffersOES vs glGenFramebuffers?" . Consultado el 19 de abril de 2022 .
  7. "Comunicados de prensa de Khronos - OpenGL ES 2.0" . Khronos.org. 5 de marzo de 2007. Archivado del original el 28 de diciembre de 2010. Consultado el 23 de diciembre de 2010 .
  8. Edward Angel, Dave Shreiner, Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL , 6.ª edición, págs. xxi-xxii, ISBN 978-0-13-254523-5
  9. "El lenguaje de sombreado OpenGL® ES" (PDF) . Khronos.org . Consultado el 16 de febrero de 2013 .
  10. "Sistema gráfico OpenGL(R): una especificación (versión 4.1 (perfil principal)" (PDF) . 25 de julio de 2010.
  11. Munshi, Aaftab; Leech, Jon (2 de noviembre de 2010). "Especificación del perfil común de OpenGL ES - Versión 2.0.25 (Especificación completa)" (PDF) . registry.khronos.org . Archivado (PDF) del original el 12 de marzo de 2025.
  12. "OpenGL© ES – Especificación de perfil común 2.0.25 (Especificación de diferencias)" (PDF) . 2 de noviembre de 2010.
  13. 1 2 "Guía de programación de OpenGL ES 3.0" (PDF) . Pearson Education, Inc. Recuperado el 18 de abril de 2022 .
  14. ^ "Registro Khronos OpenGL ES - The Khronos Group Inc" . registro.khronos.org .
  15. "Khronos lanza la especificación OpenGL ES 3.0 para llevar los gráficos 3D móviles al siguiente nivel" . Khronos. 6 de agosto de 2012. Consultado el 6 de agosto de 2012 .
  16. "WebGL: gráficos 2D y 3D para la web" . Mozilla . Consultado el 30 de junio de 2023 .
  17. "Especificación WebGL 2.0" . registry.khronos.org .
  18. Leech, Jon; Lipchak, Benj (1 de noviembre de 2019). "OpenGL ES - Versión 3.0.6" (PDF) . registry.khronos.org . Archivado (PDF) del original el 31 de enero de 2025.
  19. "Especificación GLSL ES 3.0" (PDF) . Khronos . Consultado el 30 de junio de 2023 .
  20. ^ "Registro Khronos OpenGL ES - The Khronos Group Inc" . registro.khronos.org .
  21. "Khronos publica la especificación OpenGL ES 3.1" . Khronos.org. 17 de marzo de 2014. Consultado el 17 de marzo de 2014 .
  22. Leech, Jon (3 de noviembre de 2016). "OpenGL ES - Versión 3.1" (PDF) . registry.khronos.org . Archivado (PDF) del original el 22 de septiembre de 2024.
  23. ^ "Registro Khronos OpenGL ES - The Khronos Group Inc" . registro.khronos.org .
  24. Leech, Jon (5 de mayo de 2022). "OpenGL ES - Versión 3.2" (PDF) . registry.khronos.org . Archivado (PDF) del original el 22 de septiembre de 2024.
  25. "Lenguaje de sombreado OpenGL ES - Versión 3.20.8" (PDF) . registry.khronos.org . 14 de agosto de 2023. Archivado (PDF) del original el 24 de enero de 2025.
  26. "La próxima generación de OpenGL se convierte en Vulkan: se publican detalles adicionales" . Archivado del original el 4 de marzo de 2015.
  27. "Plataforma Android" . Desarrolladores de Android .
  28. "Hoja de producto del sistema operativo Symbian versión 8.0" . 30 de marzo de 2008. Archivado del original el 30 de marzo de 2008. Consultado el 30 de marzo de 2008 .
  29. Dueder, Janelle (09-12-2022). "OpenGL ES - Desarrollo de juegos para Symbian" . 25 años de programación . Archivado del original el 14-01-2023 . Recuperado el 14-01-2023 .
  30. "Uso de OpenGL ES" . Plataforma de desarrollo de software QNX (v6.5.0) . QNX . Consultado el 8 de enero de 2011 .
  31. "Demostración de OpenGL ES en formato PPT" . The Khronos Group . 21 de noviembre de 2021.
  32. "Presentación de OpenGL ES/PSGL en formato PPT" . Sony . Khronos. 21 de noviembre de 2021.
  33. "SDK de OpenGL ES disponible para Nokia 6630" . Foros de Khronos . 22 de septiembre de 2004. Consultado el 14 de enero de 2023 .
  34. "Novedades de esta versión beta" . Notas de la versión: aplicación BlackBerry Java . Investigación en movimiento . Archivado del original el 2 de diciembre de 2009. Consultado el 8 de diciembre de 2009 .
  35. Koh, Damian (29 de noviembre de 2009). "Qué esperar de los teléfonos inteligentes BlackBerry" . CNET Asia . Archivado del original el 13 de diciembre de 2009. Consultado el 8 de diciembre de 2009 .
  36. 1 2 "PDK - Descripción general" . Centro de desarrolladores de HP Palm. Archivado del original el 1 de enero de 2011. Consultado el 23 de diciembre de 2010 .
  37. "DMP anuncia que Nintendo ha adoptado PICA 200, compatible con OpenGL ES 1.1" . 21 de junio de 2010. Consultado el 2 de junio de 2013 .
  38. "Especificaciones de Android 2.2" . 1 de julio de 2010. Archivado del original el 11 de octubre de 2010.
  39. 1 2 3 4 "Extensiones y capacidades de Mesa OpenGL" . people.freedesktop.org .
  40. 1 2 "Extensiones y capacidades de Mesa OpenGL" . people.freedesktop.org .
  41. "Software Maemo - Nokia > Ordenador móvil Nokia N900 > Especificaciones técnicas" . Nokia Corporation. Archivado del original el 29 de octubre de 2009. Consultado el 12 de enero de 2010 .
  42. "iOS 8 para desarrolladores" . Apple Developer.
  43. ^ "Productos conformes con Khronos" . 21 de noviembre de 2021.
  44. Sag, Anshel (11 de abril de 2013). "El estado de OpenGL ES 3.0: ¿Quién tiene qué?" . Bright Side of News . Archivado del original el 15 de junio de 2013. Consultado el 22 de diciembre de 2015 .
  45. "Productos compatibles con OpenGL ES3.1" . Consultado el 11 de agosto de 2014 .
  46. "Unidades de procesamiento gráfico Adreno™" . Qualcomm . Consultado el 11 de agosto de 2014 .
  47. "¿GL ES 3.1 en Adreno 3xx?" . Consultado el 11 de agosto de 2014 .
  48. "Explorando la arquitectura Mali Midgard de ARM" . AnandTech. Archivado del original el 5 de julio de 2014. Consultado el 11 de agosto de 2014 .
  49. "Vivante Vega Cores para 3D" . Vivante. Archivado del original el 17 de octubre de 2014. Consultado el 10 de diciembre de 2014 .
  50. "Khronos estrena OpenGL ES 3.2 y nuevas extensiones GL, pero no Vulkan esta semana" . 10 de agosto de 2015. Consultado el 11 de agosto de 2015 .
  51. "OpenGL ES 3.2 y Vulkan: todo lo que necesitas saber" . Android Authority . 15 de agosto de 2015. Consultado el 22 de diciembre de 2015 .
  52. "Estado de la API de gráficos 3D: SIGGRAPH 2015" (PDF) . Khronos . La industria enviará más de 1700 millones de dispositivos en 2015.
  53. "NVIDIA lanza los controladores 358.50 Game Ready para Star Wars Battlefront" . AnandTech. Archivado del original el 8 de octubre de 2015. Consultado el 7 de octubre de 2015 .
  54. Apple Inc. "Novedades en iOS - Apple Developer" . developer.apple.com . Consultado el 7 de agosto de 2018. Las aplicaciones creadas con OpenGL ES seguirán funcionando en iOS 12, pero OpenGL ES está obsoleto en iOS 13.
  55. Khronos. "Vulkan, OpenGL y OpenGL ES" (PDF) . www.khronos.org . Consultado el 24 de abril de 2020 .
  56. "p3/regal: Regal para OpenGL" . GitHub. 18 de octubre de 2021.
  57. McCutchan, John (7 de septiembre de 2012). "En profundidad: Llevando Regal OpenGL al cliente nativo" . Gamasutra.
  58. "GL4ES - El controlador OpenGL para hardware GLES" . GitHub .

Lecturas adicionales

  • Ginsburg, Dan; Purnomo, Budirijanto; Shreiner, Dave; Munshi, Aaftab (2014). Guía de programación de OpenGL ES 3.0 . Profesional de Addison-Wesley. ISBN 978-0-321-93388-1.
  • Pulli, Kari; Aarnio, Tomi; Miettinen, Ville; Roimela, Kimmo y Vaarala, Jani (2007). Gráficos 3D móviles con OpenGL ES y M3G . Morgan Kaufman. ISBN 978-0-12-373727-4.
  • Astle, Dave y Durnil, David (2004). Desarrollo de juegos con OpenGL ES . Course Technology PTR. ISBN 1-59200-370-2.
  • Pulli, Kari; Aarnio, Tomi; Roimela, Kimmo y Vaarala, Jani (2005). "Diseño de interfaces de programación gráfica para dispositivos móviles". IEEE Computer Graphics and Applications . 25 (6). IEEE CG&A 2005: 66– 75. Bibcode : 2005ICGA...25f..66P . doi : 10.1109/MCG.2005.129 . PMID 16315479. S2CID 8177273 .  
  • Sitio web oficialEdita esto en Wikidata
  • Seguimiento público de errores
  • Empresas compatibles con OpenGL ES
  • foros públicos
  • Lista de dispositivos compatibles con OpenGL ES
  • Página principal de OpenGL
  • El emulador de OpenGL ES 1.1 y 2.0 de ARM no funciona. No haga clic.
  • El emulador OpenGL ES 3.0 de ARM Link no funciona. No haga clic.