stringtranslate.com

OpenGL ES

OpenGL para sistemas integrados ( OpenGL ES o GLES ) es un subconjunto [2] de la interfaz de programación de aplicaciones (API) de renderizado de gráficos por ordenador OpenGL para renderizar gráficos por ordenador en 2D y 3D como los que se utilizan en los videojuegos , normalmente acelerados por hardware utilizando una unidad de procesamiento gráfico (GPU). Está diseñado para sistemas integrados como teléfonos inteligentes , tabletas , consolas de videojuegos y PDA . OpenGL ES es la " API de gráficos 3D más ampliamente implementada en la historia". [3]

La API es multiplataforma y multilenguaje . La biblioteca GLU y la GLUT original no están disponibles para OpenGL ES, pero freeglut sí las admite. 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 controladores de alto rendimiento más sencillos para dispositivos móviles y de escritorio. [4]

Versiones

Actualmente existen varias versiones de la especificación OpenGL ES. OpenGL ES 1.0 se ha elaborado en relación con la especificación OpenGL 1.3, OpenGL ES 1.1 se ha definido en relación con la especificación OpenGL 1.5 y OpenGL ES 2.0 se ha definido 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 poder trasladarse fácilmente a la versión de escritorio OpenGL 1.3; como OpenGL ES es una versión reducida de la API, lo contrario puede ser cierto o no, dependiendo de las características particulares que se utilicen.

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

Tanto las versiones 1.0 como 1.1 tienen perfiles comunes (CM) y comunes lite (CL), con la diferencia que el perfil común lite solo admite soporte para tipos de datos de punto fijo en lugar de punto flotante , mientras que el común admite ambos.

OpenGL ES 1.0

OpenGL ES 1.0 se lanzó al público el 28 de julio de 2003. OpenGL ES 1.0 se basa en la API original de OpenGL 1.3, con muchas funciones eliminadas y algunas agregadas. Una diferencia significativa entre OpenGL y OpenGL ES es que OpenGL ES eliminó la necesidad de encerrar las llamadas a la biblioteca OpenGL con glBeginy glEnd. Otras diferencias significativas son que la semántica de llamadas para funciones de renderizado primitivo se cambió a favor de matrices de vértices y se introdujeron tipos de datos de punto fijo para las coordenadas de vértices. También se agregaron atributos para brindar un mejor soporte a 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 liviana, que incluye:

La versión actual es 1.0.0.2. [6]

OpenGL ES 1.1

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

OpenGL ES 2.0

OpenGL ES 2.0 se lanzó al público en marzo de 2007. [10] Se basa en líneas generales en OpenGL 2.0, pero elimina la mayor parte del flujo de renderizado de funciones fijas en favor de uno programable en un movimiento similar a la transición de OpenGL 3.0 a 3.1. [11] El flujo de control en los sombreadores generalmente se limita a la ramificación hacia adelante y a los bucles donde el número máximo de iteraciones se puede determinar fácilmente en tiempo de compilación. [12] 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 especificados anteriormente por la API de función fija, se reemplazan por sombreadores escritos por el programador de gráficos. Como resultado, OpenGL ES 2.0 no es compatible con versiones anteriores de 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. [13] La versión actual es 2.0.25. [14]

El Grupo Khronos ha escrito un documento que describe las diferencias entre OpenGL ES 2.0 y el OpenGL 2.0 normal. [15]

OpenGL ES 3.0

La especificación OpenGL ES 3.0 [17] se publicó en agosto de 2012. [18] Es compatible con versiones anteriores de OpenGL ES 2.0 y parcialmente compatible con WebGL 2.0, [19] ya que WebGL 2.0 fue diseñado para tener un alto grado de interoperabilidad con OpenGL ES 3.0. [20] La versión actual del estándar OpenGL ES 3.0 es 3.0.6, publicada en noviembre de 2019. [21]

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

OpenGL ES 3.1

La especificación OpenGL ES 3.1 [23] se publicó en marzo de 2014. Las nuevas funciones de OpenGL ES 3.1 incluyen: [24]

OpenGL ES 3.1 es compatible con versiones anteriores de OpenGL ES 2.0 y 3.0, lo que permite que las aplicaciones incorporen nuevas funciones de forma gradual. La versión actual es la 3.1 (noviembre de 2016). [25]

OpenGL ES 3.2

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

El estado actual es el 3.2.6 de julio de 2019. [27] [28]

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

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

Uso de la plataforma

Para ver la lista completa de empresas y sus productos compatibles, consulte aquí

OpenGL ES 1.0

OpenGL ES 1.0 agregó una API de gráficos 3D oficial a los sistemas operativos Android [30] y Symbian OS v8.0a [31] [32] , así como también a QNX [33]. También es compatible con PlayStation 3 como una de sus API de gráficos oficiales [34] (la otra es la biblioteca de bajo nivel libgcm ) con Cg de Nvidia en lugar de GLSL. [35] 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: [46] [47]

OpenGL ES 3.1

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

Paquete de extensión de Android

Android Extension Pack (AEP) es un conjunto de extensiones de OpenGL ES 3.1, todas agrupadas en una única extensión introducida por Google en 2014. Esto permite a las aplicaciones utilizar todas las características del conjunto de extensiones, mientras que solo prueban la presencia de una sola. El AEP se agregó oficialmente a Android Lollipop para proporcionar características adicionales como teselación sobre lo que estaba oficialmente en la revisión GLES 3.1. La actualización de OpenGL ES 3.2 se compone en gran parte de las adiciones de AEP, que ya están presentes en OpenGL de escritorio. [53]

OpenGL ES 3.2

OpenGL ES 3.2, que incorpora el Android Extension Pack (AEP), "cuenta con una pequeña cantidad de mejoras con respecto a OpenGL ES 3.1 del año pasado. Ambos hacen uso de características similares del AEP. A partir del AEP, el hardware compatible con OpenGL ES 3.2 admitirá teselación para obtener más detalles de geometría, nuevos sombreadores de geometría, compresión de textura ASTC para un menor consumo de ancho de banda 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 de alta gama ya se encuentran en la especificación completa de OpenGL 4 del grupo". [54] [3]

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

Desuso en plataformas de Apple

OpenGL ES (y OpenGL) quedó obsoleto en los sistemas operativos de Apple en favor de su propia API de gráficos Metal , pero todavía funcionaba al menos hasta iOS 12. [ 56]

El futuro

Actualmente no hay planes para una nueva versión básica de OpenGL ES, ya que se considera que la adopción de Vulkan lo desplazará en aplicaciones integradas y móviles. El desarrollo de extensiones para OpenGL ES continúa en 2017. [57]

Compatibilidad con OpenGL

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

Véase también

Referencias

  1. ^ "Khronos amplía el alcance del ecosistema de estándares abiertos 3D". 10 de agosto de 2015.
  2. ^ "Descripción general de OpenGL ES - The Khronos Group Inc". The Khronos Group . 19 de julio de 2011. Archivado desde el original el 14 de septiembre de 2024.
  3. ^ ab "3D Graphics API State of the Union: SIGGRAPH 2015" (PDF) . Khronos . La industria enviará más de 1.700 millones de dispositivos en 2015
  4. ^ Hruska, Joel (4 de marzo de 2015). "Todavía no está muerto: Mantle de AMD impulsa la nueva API de Vulkan y los esfuerzos de VR". ExtremeTech . Ziff Davis.
  5. ^ "¿Qué versiones de GLSL puedo usar en OpenGL ES 2.0?". Desbordamiento de pila.
  6. ^ https://www.khronos.org/registry/OpenGL/specs/es/1.0/opengles_spec_1_0.pdf [ URL desnuda PDF ]
  7. ^ http://developer.amd.com/wordpress/media/2012/10/GDC06-GLES_Tutorial_Day-Munshi-OpenGLES_Overview.pdf [ URL básica PDF ]
  8. ^ https://www.khronos.org/registry/OpenGL/specs/es/1.1/es_full_spec_1.1.pdf [ URL desnuda PDF ]
  9. ^ "Desbordamiento de pila: ¿glGenFramebuffersOES frente a glGenFramebuffers?" . Consultado el 19 de abril de 2022 .
  10. ^ "Khronos Press Releases - OpenGL ES 2.0". Khronos.org. 5 de marzo de 2007. Archivado desde el original el 28 de diciembre de 2010. Consultado el 23 de diciembre de 2010 .
  11. ^ Edward Angel, Dave Shreiner, Gráficos informáticos interactivos: un enfoque descendente con OpenGL basado en sombreadores , 6.ª edición, págs. xxi-xxii, ISBN 978-0-13-254523-5 
  12. ^ "El lenguaje de sombreado OpenGL® ES" (PDF) . Khronos.org . Consultado el 16 de febrero de 2013 .
  13. ^ "El sistema de gráficos OpenGL(R): una especificación (versión 4.1 (perfil principal)" (PDF) . 25 de julio de 2010.
  14. ^ https://www.khronos.org/registry/OpenGL/specs/es/2.0/es_full_spec_2.0.pdf [ URL desnuda PDF ]
  15. ^ "OpenGL© ES – Especificación de perfil común 2.0.25 (Especificación de diferencias)" (PDF) . 2 de noviembre de 2010.
  16. ^ ab "Guía de programación de OpenGL ES 3.0" (PDF) . Pearson Education, Inc . Consultado el 18 de abril de 2022 .
  17. ^ "Registro Khronos OpenGL ES - The Khronos Group Inc". registro.khronos.org .
  18. ^ "Khronos lanza la especificación OpenGL ES 3.0 para llevar los gráficos 3D móviles al siguiente nivel". Khronos. 2012-08-06 . Consultado el 2012-08-06 .
  19. ^ "WebGL: gráficos 2D y 3D para la web". Mozilla . Consultado el 30 de junio de 2023 .
  20. ^ "Especificación WebGL 2.0". registration.khronos.org .
  21. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf [ URL desnuda PDF ]
  22. ^ "Especificación GLSL ES 3.0" (PDF) . Khronos . Consultado el 30 de junio de 2023 .
  23. ^ "Registro Khronos OpenGL ES - The Khronos Group Inc". registro.khronos.org .
  24. ^ "Khronos lanza la especificación OpenGL ES 3.1". Khronos.org. 2014-03-17 . Consultado el 2014-03-17 .
  25. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.1/es_spec_3.1.pdf [ URL desnuda PDF ]
  26. ^ "Registro Khronos OpenGL ES - The Khronos Group Inc". registro.khronos.org .
  27. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.2/es_spec_3.2.pdf [ URL desnuda PDF ]
  28. ^ https://www.khronos.org/registry/OpenGL/specs/es/3.2/GLSL_ES_Specification_3.20.pdf [ URL desnuda PDF ]
  29. ^ "OpenGL de próxima generación se convierte en Vulkan: se publican detalles adicionales".
  30. ^ "Plataforma Android". Desarrolladores de Android .
  31. ^ "Hoja de producto de Symbian OS versión 8.0". 2008-03-30. Archivado desde el original el 2008-03-30 . Consultado el 2008-03-30 .
  32. ^ Dueder, Janelle (9 de diciembre de 2022). "OpenGL ES: desarrollo de juegos para Symbian". 25 años de programación . Consultado el 14 de enero de 2023 .
  33. ^ "Uso de OpenGL ES". Plataforma de desarrollo de software QNX (v6.5.0) . QNX . Consultado el 8 de enero de 2011 .
  34. ^ "Demostración de OpenGL ES en formato PPT". 21 de noviembre de 2021.
  35. ^ "Presentación OpenGL ES/PSGL en formato PPT". Sony . Khronos. 21 de noviembre de 2021.
  36. ^ "El SDK de OpenGL ES está disponible para Nokia 6630". Foros de Khronos . 22 de septiembre de 2004. Consultado el 14 de enero de 2023 .
  37. ^ "Novedades en esta versión beta". Notas de la versión: aplicación Java para BlackBerry . Research in Motion . Archivado desde el original el 2 de diciembre de 2009. Consultado el 8 de diciembre de 2009 .
  38. ^ Koh, Damian (29 de noviembre de 2009). "Qué esperar de los smartphones BlackBerry". CNET Asia . Archivado desde el original el 13 de diciembre de 2009. Consultado el 8 de diciembre de 2009 .
  39. ^ ab "PDK - Descripción general". Centro para desarrolladores de HP Palm. Archivado desde el original el 1 de enero de 2011. Consultado el 23 de diciembre de 2010 .
  40. ^ "DMP anuncia que Nintendo ha adoptado PICA 200 compatible con OpenGL ES 1.1". 2010-06-21 . Consultado el 2013-06-02 .
  41. ^ "Especificaciones de Android 2.2". 1 de julio de 2010. Archivado desde el original el 11 de octubre de 2010.
  42. ^ abcd "Extensiones y capacidades de Mesa OpenGL". people.freedesktop.org .
  43. ^ ab "Extensiones y capacidades de Mesa OpenGL". people.freedesktop.org .
  44. ^ "Software Maemo - Nokia > Computadora móvil Nokia N900 > Especificaciones técnicas". Nokia Corporation. Archivado desde el original el 29 de octubre de 2009. Consultado el 12 de enero de 2010 .
  45. ^ "iOS 8 para desarrolladores". Desarrollador de Apple.
  46. ^ "Productos compatibles con Khronos". 21 de noviembre de 2021.
  47. ^ Sag, Anshel (11 de abril de 2013). "El estado de OpenGL ES 3.0: quién tiene qué". El lado positivo de las noticias . Archivado desde el original el 15 de junio de 2013. Consultado el 22 de diciembre de 2015 .
  48. ^ "Productos compatibles con OpenGL ES3.1" . Consultado el 11 de agosto de 2014 .
  49. ^ "Unidades de procesamiento gráfico Adreno™". Qualcomm . Consultado el 11 de agosto de 2014 .
  50. ^ "¿GL ES 3.1 en Adreno 3xx?" . Consultado el 11 de agosto de 2014 .
  51. ^ "Exploración de la arquitectura Mali Midgard de ARM". AnandTech . Consultado el 11 de agosto de 2014 .
  52. ^ "Núcleos Vivante Vega para 3D". Vivante . Consultado el 10 de diciembre de 2014 .
  53. ^ "Khronos presenta 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 .
  54. ^ "OpenGL ES 3.2 y Vulkan: todo lo que necesitas saber". Android Authority . 2015-08-15 . Consultado el 2015-12-22 .
  55. ^ "NVIDIA lanza los controladores Game Ready 358.50 para Star Wars Battlefront". AnandTech . Consultado el 7 de octubre de 2015 .
  56. ^ Apple Inc. "Novedades de 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 ha quedado obsoleto en iOS 13.
  57. ^ Khronos. «Vulkan, OpenGL y OpenGL ES» (PDF) . www.khronos.org . Consultado el 24 de abril de 2020 .
  58. ^ "p3/regal: Regal para OpenGL". GitHub. 18 de octubre de 2021.
  59. ^ McCutchan, John (7 de septiembre de 2012). "En profundidad: cómo incorporar OpenGL de Regal a Native Client". Gamasutra.
  60. ^ "GL4ES - El controlador OpenGL para hardware GLES". GitHub .

Lectura adicional

Enlaces externos