De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

OpenGL ( Abra Graphics Library [3] ) es una lengua cruz , cruz-plataforma de interfaz de programación de aplicaciones (API) para la representación en 2D y 3D de gráficos vectoriales . La API se usa generalmente para interactuar con una unidad de procesamiento de gráficos (GPU), para lograr una representación acelerada por hardware .

Silicon Graphics, Inc. (SGI) comenzó a desarrollar OpenGL en 1991 y lo lanzó el 30 de junio de 1992; [4] [5] las aplicaciones lo utilizan ampliamente en los campos del diseño asistido por computadora (CAD), realidad virtual , visualización científica , visualización de información, simulación de vuelo y videojuegos . Desde 2006, OpenGL ha sido administrado por el consorcio tecnológico sin fines de lucro Khronos Group .

Diseño [ editar ]

Una ilustración del proceso de canalización de gráficos

La especificación OpenGL describe una API abstracta para dibujar gráficos 2D y 3D. Si bien es posible que la API se implemente completamente en software, está diseñada para implementarse mayoritaria o completamente en hardware .

La API se define como un conjunto de funciones que pueden ser invocadas por el programa cliente, junto con un conjunto de constantes enteras con nombre (por ejemplo, la constante GL_TEXTURE_2D, que corresponde al número decimal 3553). Aunque las definiciones de funciones son superficialmente similares a las del lenguaje de programación C , son independientes del lenguaje. Como tal, OpenGL tiene muchos enlaces de idioma , algunos de los más notables son el enlace de JavaScript WebGL (API, basado en OpenGL ES 2.0 , para renderizado 3D desde dentro de un navegador web ); los enlaces C WGL , GLX yCGL ; el enlace C proporcionado por iOS ; y los enlaces Java y C proporcionados por Android .

Además de ser independiente del idioma, OpenGL también es multiplataforma. La especificación no dice nada sobre el tema de la obtención y gestión de un contexto OpenGL, dejando esto como un detalle del sistema de ventanas subyacente . Por la misma razón, OpenGL se ocupa exclusivamente de la renderización y no proporciona API relacionadas con la entrada, el audio o las ventanas.

Desarrollo [ editar ]

OpenGL es una API en evolución. Khronos Group lanza regularmente nuevas versiones de las especificaciones de OpenGL , cada una de las cuales amplía la API para admitir varias funciones nuevas. Los detalles de cada versión se deciden por consenso entre los miembros del Grupo, incluidos los fabricantes de tarjetas gráficas, diseñadores de sistemas operativos y empresas de tecnología en general como Mozilla y Google . [6]

Además de las características requeridas por la API central, los proveedores de unidades de procesamiento de gráficos (GPU) pueden proporcionar funcionalidad adicional en forma de extensiones . Las extensiones pueden introducir nuevas funciones y nuevas constantes, y pueden relajar o eliminar restricciones en las funciones de OpenGL existentes. Los proveedores pueden usar extensiones para exponer API personalizadas sin necesidad de soporte de otros proveedores o del Grupo Khronos en su conjunto, lo que aumenta enormemente la flexibilidad de OpenGL. Todas las extensiones se recopilan y definen en el Registro OpenGL. [7]

Cada extensión está asociada con un identificador corto, basado en el nombre de la empresa que la desarrolló. Por ejemplo, el identificador de Nvidia es NV, que es parte del nombre de la extensión GL_NV_half_float, la constante GL_HALF_FLOAT_NVy la función glVertex2hNV(). [8] Si varios proveedores acuerdan implementar la misma funcionalidad usando la misma API, se puede liberar una extensión compartida, usando el identificador EXT. En tales casos, también podría suceder que la Junta de Revisión de Arquitectura del Grupo Khronos otorgue a la extensión su aprobación explícita, en cuyo caso se utiliza el identificador ARB. [9]

Las características introducidas por cada nueva versión de OpenGL generalmente se forman a partir de las características combinadas de varias extensiones ampliamente implementadas, especialmente extensiones de tipo ARB o EXT.

Documentación [ editar ]

La Junta de Revisión de Arquitectura de OpenGL publicó una serie de manuales junto con la especificación que se han actualizado para realizar un seguimiento de los cambios en la API. Estos se conocen comúnmente por los colores de sus cubiertas:

El libro rojo
Guía de programación de OpenGL, novena edición. ISBN  978-0-134-49549-1
La guía oficial para aprender OpenGL, versión 4.5 con SPIR-V
El libro naranja
Lenguaje de sombreado OpenGL, tercera edición. ISBN 0-321-63763-1 
Un tutorial y un libro de referencia para GLSL .

Libros históricos (anteriores a OpenGL 2.0):

El Libro Verde
Programación OpenGL para el sistema X Window. ISBN 978-0-201-48359-8 
Un libro sobre la interfaz X11 y OpenGL Utility Toolkit (GLUT).
El libro azul
Manual de referencia de OpenGL, cuarta edición. ISBN 0-321-17383-X 
Esencialmente una copia impresa de las páginas del manual (man) de Unix para OpenGL.
Incluye un diagrama desplegable del tamaño de un póster que muestra la estructura de una implementación OpenGL idealizada.
The Alpha Book (tapa blanca)
Programación OpenGL para Windows 95 y Windows NT. ISBN 0-201-40709-4 
Un libro sobre la interfaz de OpenGL con Microsoft Windows.

Bibliotecas asociadas [ editar ]

Las primeras versiones de OpenGL se lanzaron con una biblioteca complementaria llamada OpenGL Utility Library (GLU). Proporcionó características simples, útiles que eran poco probable que se admiten en hardware contemporánea, tales como tessellating , y la generación de mipmaps y formas primitivas . La especificación GLU se actualizó por última vez en 1998 y depende de las características de OpenGL que ahora están en desuso .

Conjuntos de herramientas de ventana y contexto [ editar ]

Dado que la creación de un contexto OpenGL es un proceso bastante complejo, y dado que varía entre sistemas operativos , la creación automática de contexto OpenGL se ha convertido en una característica común de varias bibliotecas de desarrollo de juegos e interfaces de usuario , incluidas SDL , Allegro , SFML , FLTK , y Qt . Algunas bibliotecas se han diseñado únicamente para producir una ventana compatible con OpenGL. La primera biblioteca de este tipo fue OpenGL Utility Toolkit (GLUT), luego reemplazada por freeglut . GLFW es una alternativa más nueva. [10]

  • Estos kits de herramientas están diseñados para crear y administrar ventanas OpenGL y administrar entradas, pero poco más allá de eso. [11]
  • GLFW : un controlador de ventanas multiplataforma y teclado, mouse y joystick; está más orientado al juego
  • freeglut : una ventana multiplataforma y un controlador de teclado y mouse; su API es un superconjunto de la API GLUT, y es más estable y actualizada que GLUT
  • OpenGL Utility Toolkit (GLUT): un antiguo controlador de ventanas que ya no se mantiene.
  • Varias "bibliotecas multimedia" pueden crear ventanas OpenGL, además de entrada, sonido y otras tareas útiles para aplicaciones similares a juegos.
  • Allegro 5 : una biblioteca multimedia multiplataforma con una API C centrada en el desarrollo de juegos
  • Simple DirectMedia Layer (SDL): una biblioteca multimedia multiplataforma con una API C
  • SFML : una biblioteca multimedia multiplataforma con una API de C ++ y muchos otros enlaces a lenguajes como C #, Java, Haskell y Go
  • Kits de herramientas de widgets
  • FLTK : una pequeña biblioteca de widgets C ++ multiplataforma
  • Qt : un conjunto de herramientas de widgets C ++ multiplataforma. Proporciona muchos objetos auxiliares de OpenGL, que incluso abstraen la diferencia entre GL de escritorio y OpenGL ES
  • wxWidgets : un kit de herramientas de widgets de C ++ multiplataforma

Bibliotecas de carga de extensiones [ editar ]

Dada la alta carga de trabajo involucrada en la identificación y carga de extensiones OpenGL, se han diseñado algunas bibliotecas que cargan todas las extensiones y funciones disponibles automáticamente. Los ejemplos incluyen GLEE , GLEW y glbinding . Las extensiones también se cargan automáticamente mediante la mayoría de los enlaces de idiomas, como JOGL y PyOpenGL .

Implementaciones [ editar ]

Mesa 3D es una implementación de código abierto de OpenGL. Puede realizar renderizado de software puro y también puede utilizar aceleración de hardware en BSD , Linux y otras plataformas aprovechando la infraestructura de renderizado directo . A partir de la versión 20.0, implementa la versión 4.6 del estándar OpenGL.

Historia [ editar ]

En la década de 1980, el desarrollo de software que pudiera funcionar con una amplia gama de hardware gráfico fue un verdadero desafío. Los desarrolladores de software escribieron interfaces y controladores personalizados para cada pieza de hardware. Esto fue costoso y resultó en una multiplicación de esfuerzos.

A principios de la década de 1990, Silicon Graphics (SGI) era líder en gráficos 3D para estaciones de trabajo. Su IRIS GL API [12] se consideró de vanguardia [ cita requerida ] y se convirtió en el estándar de facto de la industria, eclipsando a los PHIGS basados ​​en estándares abiertos . Esto se debió a que se consideró que IRIS GL era más fácil de usar y porque admitía el renderizado en modo inmediato . Por el contrario, PHIGS se consideró difícil de usar y obsoleta en funcionalidad.

Los competidores de SGI (incluidos Sun Microsystems , Hewlett-Packard e IBM ) también pudieron llevar al mercado hardware 3D compatible con extensiones realizadas al estándar PHIGS, lo que presionó a SGI para que abriera una versión de IrisGL como estándar público llamado OpenGL .

Sin embargo, SGI tenía muchos clientes para quienes el cambio de IrisGL a OpenGL exigiría una inversión significativa. Además, IrisGL tenía funciones API que eran irrelevantes para los gráficos 3D. Por ejemplo, incluía una API de ventanas, teclado y mouse, en parte porque se desarrolló antes que el sistema X Window y Sun's NeWS . Además, las bibliotecas IrisGL no eran adecuadas para la apertura debido a problemas de licencias y patentes [ se necesita más explicación ] . Estos factores requerían que SGI continuara respaldando las API de programación avanzadas y patentadas Iris Inventor e Iris Performer mientras maduraba el soporte de mercado para OpenGL.

Una de las restricciones de IrisGL era que solo brindaba acceso a funciones compatibles con el hardware subyacente. Si el hardware de gráficos no admitía una función de forma nativa, la aplicación no podría usarla. OpenGL superó este problema al proporcionar implementaciones de software de características no compatibles con el hardware, lo que permite que las aplicaciones utilicen gráficos avanzados en sistemas de relativamente baja potencia. El acceso estandarizado OpenGL al hardware, impulsó la responsabilidad de desarrollo de los programas de interfaz de hardware ( controladores de dispositivos) a los fabricantes de hardware y funciones de ventanas delegadas al sistema operativo subyacente. Con tantos tipos diferentes de hardware gráfico, lograr que todos hablen el mismo idioma de esta manera tuvo un impacto notable al brindar a los desarrolladores de software una plataforma de nivel superior para el desarrollo de software 3D.

En 1992, [13] SGI lideró la creación del OpenGL Architecture Review Board (OpenGL ARB), el grupo de empresas que mantendría y expandiría la especificación OpenGL en el futuro.

En 1994, SGI jugó con la idea de lanzar algo llamado " OpenGL ++ " que incluía elementos como una API de gráficos de escena (presumiblemente basada en su tecnología Performer ). La especificación se distribuyó entre algunas partes interesadas, pero nunca se convirtió en un producto. [14]

Microsoft lanzó Direct3D en 1995, que finalmente se convirtió en el principal competidor de OpenGL. Más de 50 desarrolladores de juegos firmaron una carta abierta a Microsoft, lanzada el 12 de junio de 1997, pidiendo a la compañía que apoye activamente a Open GL. [15] El 17 de diciembre de 1997, [16] Microsoft y SGI iniciaron el proyecto Fahrenheit , que fue un esfuerzo conjunto con el objetivo de unificar las interfaces OpenGL y Direct3D (y también agregar una API de gráficos de escena). En 1998, Hewlett-Packard se unió al proyecto. [17]Inicialmente mostró cierta promesa de poner orden en el mundo de las API de gráficos por computadora 3D interactivos, pero debido a las limitaciones financieras en SGI, razones estratégicas en Microsoft y una falta general de apoyo de la industria, fue abandonado en 1999. [18]

En julio de 2006, la Junta de Revisión de Arquitectura OpenGL votó a favor de transferir el control del estándar API OpenGL al Grupo Khronos. [19] [20]

En junio de 2018, Apple desaprobó las API de OpenGL en todas sus plataformas ( iOS , macOS y tvOS ), lo que alienta encarecidamente a los desarrolladores a utilizar su API Metal patentada , que se introdujo en 2014. [21]

Historial de versiones [ editar ]

La primera versión de OpenGL, la versión 1.0, fue lanzada el 30 de junio de 1992 por Mark Segal y Kurt Akeley . Desde entonces, OpenGL se ha ampliado ocasionalmente mediante el lanzamiento de una nueva versión de la especificación. Dichas versiones definen un conjunto básico de características que deben admitir todas las tarjetas gráficas conformes y contra las cuales se pueden escribir nuevas extensiones más fácilmente. Cada nueva versión de OpenGL tiende a incorporar varias extensiones que tienen un soporte generalizado entre los proveedores de tarjetas gráficas, aunque los detalles de esas extensiones pueden cambiar.

OpenGL 2.0 [ editar ]

Fecha de lanzamiento : 7 de septiembre de 2004

OpenGL 2.0 fue concebido originalmente por 3Dlabs para abordar las preocupaciones de que OpenGL se estaba estancando y carecía de una dirección sólida. [38] 3Dlabs propuso una serie de adiciones importantes al estándar. La mayoría de estos fueron, en ese momento, rechazados por la ARB o nunca llegaron a buen término en la forma propuesta por 3Dlabs. Sin embargo, su propuesta de un lenguaje de sombreado de estilo C finalmente se completó, lo que resultó en la formulación actual del lenguaje de sombreado OpenGL ( GLSL o GLslang). Al igual que los lenguajes de sombreado de tipo ensamblador que estaba reemplazando, permitía reemplazar el vértice de función fija y la tubería de fragmentos con sombreadores , aunque esta vez escrito en un lenguaje de alto nivel similar a C.

El diseño de GLSL se destacó por hacer relativamente pocas concesiones a los límites del hardware disponible en ese momento. Esto se remonta a la tradición anterior de que OpenGL estableciera un objetivo ambicioso y con visión de futuro para los aceleradores 3D en lugar de simplemente rastrear el estado del hardware actualmente disponible. La especificación final de OpenGL 2.0 [39] incluye soporte para GLSL.

Longs Peak y OpenGL 3.0 [ editar ]

Antes del lanzamiento de OpenGL 3.0, la nueva revisión tenía el nombre en clave Longs Peak . En el momento de su anuncio original, Longs Peak se presentó como la primera revisión importante de API en la vida de OpenGL. Consistió en una revisión de la forma en que funciona OpenGL, requiriendo cambios fundamentales en la API.

El borrador introdujo un cambio en la gestión de objetos. El modelo de objetos GL 2.1 se construyó sobre el diseño basado en estados de OpenGL. Es decir, para modificar un objeto o usarlo, es necesario vincular el objeto al sistema de estado, luego hacer modificaciones al estado o realizar llamadas a funciones que usan el objeto vinculado.

Debido al uso de OpenGL de un sistema de estado, los objetos deben ser mutables. Es decir, la estructura básica de un objeto puede cambiar en cualquier momento, incluso si la canalización de representación utiliza ese objeto de forma asincrónica. Un objeto de textura se puede redefinir de 2D a 3D. Esto requiere que cualquier implementación de OpenGL agregue un grado de complejidad a la administración de objetos internos.

Bajo la API de Longs Peak, la creación de objetos se volvería atómica , usando plantillas para definir las propiedades de un objeto que se crearía con una llamada de función. Luego, el objeto podría usarse inmediatamente en varios subprocesos. Los objetos también serían inmutables; sin embargo, podrían modificar y actualizar su contenido. Por ejemplo, una textura puede cambiar su imagen, pero su tamaño y formato no se pueden cambiar.

Para admitir la compatibilidad con versiones anteriores, la API basada en el estado anterior todavía estaría disponible, pero no se expondría ninguna funcionalidad nueva a través de la API anterior en versiones posteriores de OpenGL. Esto habría permitido que las bases de código heredadas, como la mayoría de los productos CAD , siguieran ejecutándose, mientras que otro software podría escribirse o trasladarse a la nueva API.

Inicialmente, Longs Peak debía finalizar en septiembre de 2007 bajo el nombre de OpenGL 3.0, pero el Grupo Khronos anunció el 30 de octubre que se había encontrado con varios problemas que deseaba abordar antes de publicar la especificación. [40] Como resultado, la especificación se retrasó y el Grupo Khronos entró en un apagón de medios hasta el lanzamiento de la especificación final de OpenGL 3.0.

La especificación final resultó mucho menos revolucionaria que la propuesta de Longs Peak. En lugar de eliminar todo el modo inmediato y la funcionalidad fija (modo sin sombreado), la especificación los incluyó como características obsoletas. El modelo de objeto propuesto no se incluyó y no se han anunciado planes para incluirlo en futuras revisiones. Como resultado, la API se mantuvo prácticamente igual con algunas extensiones existentes que se promocionaron a la funcionalidad principal.

Entre algunos grupos de desarrolladores, esta decisión causó algo de alboroto, [41] con muchos desarrolladores profesando que cambiarían a DirectX en protesta. La mayoría de las quejas giraron en torno a la falta de comunicación de Khronos con la comunidad de desarrollo y al descarte de múltiples características que fueron vistas favorablemente por muchos. Otras frustraciones incluyeron el requisito de hardware de nivel DirectX 10 para usar OpenGL 3.0 y la ausencia de sombreadores de geometría y renderizado instanciado como características principales.

Otras fuentes informaron que la reacción de la comunidad no fue tan severa como se presentó originalmente, [42] y muchos proveedores mostraron su apoyo a la actualización. [43] [44]

OpenGL 3.0 [ editar ]

Fecha de lanzamiento : 11 de agosto de 2008

OpenGL 3.0 introdujo un mecanismo de obsolescencia para simplificar futuras revisiones de la API. Ciertas funciones, marcadas como obsoletas, podrían desactivarse por completo solicitando un contexto compatible con versiones posteriores del sistema de ventanas. Sin embargo, aún se puede acceder a las características de OpenGL 3.0 junto con estas características en desuso, solicitando un contexto completo .

Las características obsoletas incluyen:

  • Todo el procesamiento de vértices y fragmentos de función fija
  • Renderizado en modo directo, usando glBegin y glEnd
  • Mostrar listas
  • Objetivos de reproducción de colores indexados
  • OpenGL Shading Language versiones 1.10 y 1.20

OpenGL 3.1 [ editar ]

Fecha de lanzamiento : 24 de marzo de 2009

OpenGL 3.1 eliminó por completo todas las funciones que estaban en desuso en la versión 3.0, con la excepción de las líneas anchas. A partir de esta versión, no es posible acceder a nuevas funciones utilizando un contexto completo ni acceder a funciones obsoletas utilizando un contexto compatible con versiones posteriores . Se hace una excepción a la regla anterior si la implementación admite la extensión ARB_compatibility , pero esto no está garantizado.

OpenGL 3.2 [ editar ]

Fecha de lanzamiento : 3 de agosto de 2009

OpenGL 3.2 se basó en los mecanismos de obsolescencia introducidos por OpenGL 3.0, al dividir la especificación en un perfil central y un perfil de compatibilidad . Los contextos de compatibilidad incluyen las API de función fija eliminadas anteriormente, equivalentes a la extensión ARB_compatibility lanzada junto con OpenGL 3.1, mientras que los contextos centrales no. OpenGL 3.2 también incluyó una actualización a la versión 1.50 de GLSL.

OpenGL 4.0 [ editar ]

Fecha de lanzamiento : 11 de marzo de 2010

OpenGL 4.0 se lanzó junto con la versión 3.3. Fue diseñado para hardware compatible con Direct3D 11.

Como en OpenGL 3.0, esta versión de OpenGL contiene una gran cantidad de extensiones bastante intrascendentes, diseñadas para exponer completamente las capacidades del hardware de clase Direct3D 11. A continuación se enumeran solo las extensiones más influyentes.

Soporte de hardware: Nvidia GeForce serie 400 y más reciente, AMD Radeon HD 5000 Series y más reciente (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel HD Graphics en procesadores Intel Ivy Bridge y más nuevos. [45]

OpenGL 4.1 [ editar ]

Fecha de lanzamiento : 26 de julio de 2010

Soporte de hardware: Nvidia GeForce serie 400 y más reciente, AMD Radeon HD 5000 Series y más reciente (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel HD Graphics en procesadores Intel Ivy Bridge y más nuevos. [45]

  • El "tamaño máximo de textura" mínimo es 16.384 × 16.384 para las GPU que implementan esta especificación. [46]

OpenGL 4.2 [ editar ]

Fecha de lanzamiento: 8 de agosto de 2011 [31]

  • Compatibilidad con sombreadores con contadores atómicos y operaciones de carga, almacenamiento, lectura, modificación y escritura atómicas en un nivel de una textura.
  • Dibujar múltiples instancias de datos capturados del procesamiento de vértices de la GPU (incluida la teselación), para permitir que los objetos complejos se reposicionen y repliquen de manera eficiente
  • Soporte para modificar un subconjunto arbitrario de una textura comprimida, sin tener que volver a descargar toda la textura a la GPU para obtener mejoras de rendimiento significativas.

Soporte de hardware: Nvidia GeForce serie 400 y posteriores, AMD Radeon HD 5000 Series y posteriores (sombreadores FP64 implementados por emulación en algunas GPU TeraScale) e Intel HD Graphics en procesadores Intel Haswell y posteriores. [45] (Linux Mesa: Ivy Bridge y más reciente)

OpenGL 4.3 [ editar ]

Fecha de lanzamiento: 6 de agosto de 2012 [32]

  • Compute shaders que aprovechan el paralelismo de la GPU dentro del contexto de la canalización de gráficos
  • Objetos de búfer de almacenamiento de sombreadores, lo que permite a los sombreadores leer y escribir objetos de búfer como carga / almacenamiento de imágenes desde 4.2, pero a través del lenguaje en lugar de llamadas a funciones.
  • Consultas de parámetros de formato de imagen
  • Compresión de textura ETC2 / EAC como característica estándar
  • Total compatibilidad con las API de OpenGL ES 3.0
  • Capacidad de depuración para recibir mensajes de depuración durante el desarrollo de la aplicación.
  • Vistas de texturas para interpretar texturas de diferentes formas sin replicación de datos
  • Mayor seguridad de la memoria y solidez de múltiples aplicaciones

Soporte de hardware: AMD Radeon HD 5000 Series y más reciente (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel HD Graphics en procesadores Intel Haswell y más nuevos. [45] (Linux Mesa: Ivy Bridge sin texturizado de plantilla, Haswell y más reciente), Nvidia GeForce 400 series y más reciente.

OpenGL 4.4 [ editar ]

Fecha de lanzamiento: 22 de julio de 2013 [34]

  • Controles de uso de objetos de búfer reforzados
  • Consultas asincrónicas en objetos de búfer
  • Expresión de más controles de diseño de variables de interfaz en sombreadores
  • Enlace eficiente de varios objetos simultáneamente

Soporte de hardware: AMD Radeon HD 5000 Series y más reciente (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel HD Graphics en procesadores Intel Broadwell y más nuevos (Linux Mesa: Haswell y más nuevos), [47] Nvidia GeForce 400 series y más nuevos, [48] Tegra K1 .

OpenGL 4.5 [ editar ]

Fecha de lanzamiento: 11 de agosto de 2014 [7] [35]

  • Acceso directo al estado (DSA): los accesadores de objetos permiten consultar y modificar el estado sin vincular objetos a contextos, para una mayor eficiencia y flexibilidad de aplicaciones y middleware. [49]
  • Flush Control: las aplicaciones pueden controlar el vaciado de los comandos pendientes antes del cambio de contexto, lo que permite aplicaciones multiproceso de alto rendimiento;
  • Robustez: proporciona una plataforma segura para aplicaciones como los navegadores WebGL, incluida la prevención de que el reinicio de la GPU afecte a otras aplicaciones en ejecución;
  • API de OpenGL ES 3.1 y compatibilidad con sombreadores: para permitir el desarrollo y la ejecución sencillos de las últimas aplicaciones de OpenGL ES en sistemas de escritorio.

Soporte de hardware: AMD Radeon HD 5000 Series y más reciente (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel HD Graphics en procesadores Intel Broadwell y más nuevos (Linux Mesa: Haswell y más nuevos), Nvidia GeForce 400 series y más nuevos, [48] Tegra K1 y Tegra X1. [50] [51]

OpenGL 4.6 [ editar ]

Fecha de lanzamiento: 31 de julio de 2017 [7] [36] [37]

  • Procesamiento de geometría más eficiente por el lado de la GPU
  • ejecución de sombreado más eficiente ( AZDO )
  • más información a través de estadísticas, consulta de desbordamiento y contadores
  • mayor rendimiento a través de contextos sin manejo de errores
  • sujeción de la función de desplazamiento de polígono , resuelve un problema de representación de sombras
  • SPIR-V shaders
  • Filtrado anisotrópico mejorado

Soporte de hardware: AMD Radeon HD 5000 Series y más reciente (sombreadores FP64 implementados por emulación en algunas GPU TeraScale), Intel Haswell y más reciente, Nvidia GeForce 400 series y más reciente. [48]

Soporte al conductor:

  • Mesa 19.2 en Linux es compatible con OpenGL 4.6 para Intel Broadwell y versiones posteriores. [52] Mesa 20.0 admite GPU AMD Radeon, [53] mientras que el soporte para Nvidia Kepler + está en progreso.
  • Controlador de gráficos AMD Adrenalin 18.4.1 en Windows 7 SP1 , 10 versión 1803 (actualización de abril de 2018) para AMD Radeon ™ HD 7700+, HD 8500+ y versiones posteriores. Publicado en abril de 2018. [54] [55]
  • Controlador de gráficos Intel 26.20.100.6861 en Windows 10 . Publicado en mayo de 2019. [56] [57]
  • Controlador de gráficos NVIDIA GeForce 397.31 en Windows 7 , 8 , 10 x86-64 bits solamente, no es compatible con 32 bits . Publicado en abril de 2018 [58]

Implementaciones alternativas [ editar ]

Apple desaprobó OpenGL en iOS 12 y macOS 10.14 Mojave a favor de Metal , pero aún funciona a partir de macOS 10.15. La última versión compatible con OpenGL es 4.1 de 2011. [59] [60] Una biblioteca patentada de Molten, autores de MoltenVK , llamada MoltenGL, puede traducir llamadas OpenGL a Metal. [61]

Hay varios proyectos que intentan implementar OpenGL sobre Vulkan. El backend Vulkan para ANGLE de Google logró la conformidad con OpenGL ES 3.1 en julio de 2020. [62] El proyecto Mesa3D también incluye un controlador de este tipo, llamado Zink . [63]

Vulkan [ editar ]

Vulkan, anteriormente llamado "Iniciativa OpenGL de próxima generación" (glNext), [64] [65] es un esfuerzo de rediseño fundamental para unificar OpenGL y OpenGL ES en una API común que no será compatible con versiones anteriores de OpenGL. [66] [67] [68]

La versión inicial de Vulkan API se lanzó el 16 de febrero de 2016.

Ver también [ editar ]

  • Lenguaje ensamblador ARB: el lenguaje de sombreado de bajo nivel heredado de OpenGL
  • Comparación de OpenGL y Direct3D
  • Direct3D - principal competidor de OpenGL
  • Glide API : una API de gráficos que alguna vez se usó en tarjetas 3dfx Voodoo
  • Lista de aplicaciones OpenGL
  • Metal (API) : una API de gráficos para iOS, macOS, tvOS, watchOS
  • OpenAL : biblioteca de audio multiplataforma, diseñada para parecerse a OpenGL
  • OpenGL ES : OpenGL para sistemas integrados
  • OpenSL ES - API para audio en sistemas integrados, desarrollado por Khronos Group
  • OpenVG - API para gráficos 2D acelerados, desarrollado por Khronos Group
  • Especificación de interfaz RenderMan (RISpec): API abierta de Pixar para renderizado fotorrealista fuera de línea
  • VOGL : un depurador para OpenGL
  • Vulkan : API de gráficos 2D y 3D multiplataforma de baja sobrecarga, la "iniciativa OpenGL de próxima generación"
  • Canalización de gráficos
  • WebGPU

Referencias [ editar ]

  1. ^ Lextrait, Vincent (enero de 2010). "La baliza de lenguajes de programación, v10.0" . Archivado desde el original el 30 de mayo de 2012 . Consultado el 14 de marzo de 2010 .
  2. ^ "Productos: Software: OpenGL: Licencias y Logos" . SGI. Archivado desde el original el 1 de noviembre de 2012 . Consultado el 7 de noviembre de 2012 .
  3. ^ "El sistema de gráficos OpenGL: una especificación" (PDF) . 4.0 (perfil principal). 11 de marzo de 2010.
  4. ^ "SGI - Descripción general de OpenGL" . Archivado desde el original el 31 de octubre de 2004 . Consultado el 16 de febrero de 2007 .
  5. ^ Peddie, Jon (julio de 2012). "¿Quién es el más hermoso de todos?" . Mundo de gráficos por computadora . Consultado el 30 de mayo de 2018 .
  6. ^ "Preguntas frecuentes y descripción general de membresía de Khronos" . Khronos.org . Consultado el 7 de noviembre de 2012 .
  7. ^ a b c d "Registro OpenGL de Khronos" . Grupo Khronos . Consultado el 31 de julio de 2017 .
  8. ^ "NV_half_float" . Registro OpenGL . Grupo Khronos.
  9. ^ "Cómo crear extensiones de API Khronos" . Grupo Khronos . Consultado el 31 de julio de 2017 .
  10. ^ "Una lista de alternativas GLUT, mantenida por" . Grupo Khronos . Consultado el 2 de mayo de 2013 .
  11. ^ "API y kits de herramientas relacionados" . www.opengl.org . OpenGL . Consultado el 8 de octubre de 2014 .
  12. ^ "IRIS GL, propiedad de SGI" .
  13. ^ "Creación de OpenGL ARB" . Archivado desde el original el 22 de febrero de 2007 . Consultado el 16 de febrero de 2007 .
  14. ^ "Fin de OpenGL ++" . Grupo Khronos.
  15. ^ "Los principales desarrolladores de juegos piden a Microsoft que apoye activamente OpenGL" . Próxima Generación . No. 32. Imagine Media . Agosto de 1997. p. 17.
  16. ^ "Anuncio de Fahrenheit" . Archivado desde el original el 27 de septiembre de 2007.
  17. ^ "Miembros de Fahrenheit. 1998" . Computergram International . 1998. Archivado desde el original el 5 de octubre de 2007.
  18. ^ "Fin de Fahrenheit" .
  19. ^ "OpenGL ARB para pasar el control de la especificación OpenGL a Khronos Group" . Comunicado de prensa de Khronos. 31 de julio de 2006.
  20. ^ "OpenGL ARB para pasar el control de la especificación OpenGL al grupo Khronos" . AccessMyLibrary Archive.
  21. ^ Smith, Ryan (5 de junio de 2018). "Apple deja obsoleta OpenGL en todos los sistemas operativos; insta a los desarrolladores a utilizar Metal" . www.anandtech.com . Purch . Consultado el 5 de junio de 2018 .
  22. ^ Astle, Dave (1 de abril de 2003). "Más allá de OpenGL 1.1 para Windows" . gamedev.net . Consultado el 15 de noviembre de 2007 .
  23. ^ Isorna, JM (2015). Simulación visual de materiales: teoría, técnicas, análisis de casos . UPC Grau. Arquitectura, urbanisme i edificació (en español). Universitat Politècnica de Catalunya. pag. 191. ISBN 978-84-9880-564-2. Consultado el 21 de agosto de 2019 .
  24. ^ a b c "El sistema de gráficos OpenGL: una especificación" (PDF) . 2.1. 1 de diciembre de 2006.
  25. ^ "Punto primitivo" .
  26. ^ "El sistema de gráficos OpenGL: una especificación" (PDF) . 3.0. 23 de septiembre de 2008.
  27. ^ "El sistema de gráficos OpenGL: una especificación" (PDF) . 3.1. 28 de mayo de 2009.
  28. ^ "El sistema de gráficos OpenGL: una especificación" (PDF) . 3.2 (Perfil principal). 7 de diciembre de 2009.
  29. ^ "Khronos da rienda suelta a la aceleración de gráficos multiplataforma de vanguardia con OpenGL 4.0" .
  30. ^ "Khronos impulsa la evolución de gráficos 3D multiplataforma con el lanzamiento de la especificación OpenGL 4.1" .
  31. ^ a b "Khronos enriquece los gráficos 3D multiplataforma con el lanzamiento de la especificación OpenGL 4.2" .
  32. ^ a b "Khronos lanza la especificación OpenGL 4.3 con importantes mejoras" .
  33. ^ "Khronos lanza la especificación OpenGL 4.3 con importantes mejoras" .
  34. ^ a b c "Khronos lanza la especificación de OpenGL 4.4" .
  35. ^ a b "Khronos Group anuncia avances clave en el ecosistema OpenGL - Comunicado de prensa de Khronos Group" . El Khronos Group Inc . Consultado el 17 de abril de 2015 .
  36. ^ a b "Khronos lanza OpenGL 4.6 con soporte SPIR-V" . El Khronos Group Inc . Consultado el 31 de julio de 2017 .
  37. ^ a b Kessenich, John; Baldwin, Dave. "El lenguaje de sombreado OpenGL®, versión 4.60.7" . El Khronos Group Inc . Consultado el 21 de agosto de 2019 .
  38. ^ Abi-Chahla, Fedy (16 de septiembre de 2008). "OpenGL 3 (3DLabs y la evolución de OpenGL)" . Hardware de Tom . Consultado el 24 de octubre de 2010 .
  39. ^ "El sistema de gráficos OpenGL: una especificación" (PDF) . 2.0. 22 de octubre de 2004.
  40. ^ "OpenGL ARB anuncia una actualización de OpenGL 3.0" . 30 de octubre de 2007 . Consultado el 31 de octubre de 2007 .
  41. ^ "OpenGL 3.0 lanzado, desarrolladores furiosos - Slashdot" . Tech.slashdot.org . Consultado el 7 de noviembre de 2012 .
  42. ^ "OpenGL BOF funcionó bien, no se ven horquillas de tono" .
  43. ^ "El estándar de la industria para gráficos de alto rendimiento" . OpenGL. 18 de agosto de 2008 . Consultado el 31 de julio de 2017 .
  44. ^ "NVIDIA proporciona ahora el controlador OpenGL 3.0 temprano" .
  45. ^ a b c d "Controlador de gráficos Intel Iris y HD para Windows 7/8 / 8.1 64bit" . Centro de descargas de Intel . Archivado desde el original el 2 de abril de 2015.
  46. ^ "Tamaño máximo de textura esperado - Programación de gráficos y GPU" . GameDev.net .
  47. ^ "CPU Intel Skylake-S y conjuntos de chips de la serie 100 detallados en fuga aparente" . Gadgets de NDTV . 17 de abril de 2015.
  48. ↑ a b c Michael Larabel (31 de julio de 2017). "NVIDIA lanza el controlador de Linux 381.26.11 con soporte para OpenGL 4.6" . Phoronix .
  49. ^ "OpenGL 4.5 lanzado, con una de las mejores características de Direct3D" . Ars Technica . Consultado el 17 de abril de 2015 .
  50. ^ "SG4121: Actualización OpenGL para GPU NVIDIA" . Ustream . Archivado desde el original el 17 de mayo de 2015 . Consultado el 17 de abril de 2015 .
  51. ^ Kilgard, Mark. "Actualización OpenGL 4.5 para GPU NVIDIA" . Consultado el 17 de abril de 2015 .
  52. ^ Michael Larabel (21 de agosto de 2019). "El controlador Intel OpenGL Linux ahora tiene soporte OpenGL 4.6 para Mesa 19.2" . Phoronix .
  53. ^ Michael Larabel (27 de noviembre de 2019). "El controlador RadeonSI de AMD finalmente habilita OpenGL 4.6" . Phoronix .
  54. ^ "Lanzamiento del controlador de gráficos AMD Adrenalin 18.4.1 (OpenGL 4.6, Vulkan 1.1.70) - Geeks3D" . www.geeks3d.com . Consultado el 10 de mayo de 2018 .
  55. ^ "Notas de la versión de Radeon ™ Software Adrenalin Edition 18.4.1" . support.amd.com . Consultado el 10 de mayo de 2018 .
  56. ^ "Controlador de gráficos Intel 25.20.100.6861 lanzado (OpenGL 4.6 + Vulkan 1.1.103) | Geeks3D" . Consultado el 16 de mayo de 2019 .
  57. ^ "Controladores DCH de Windows® 10" . Intel DownloadCenter . Consultado el 21 de agosto de 2019 .
  58. ^ "Lanzamiento del controlador de gráficos NVIDIA GeForce 397.31 (OpenGL 4.6, Vulkan 1.1, RTX, CUDA 9.2) - Geeks3D" . www.geeks3d.com . Consultado el 10 de mayo de 2018 .
  59. ^ Cunningham, Andrew (7 de octubre de 2019). "macOS 10.15 Catalina: la revisión de Ars Technica" . Ars Technica .
  60. ^ Axon, Samuel (6 de junio de 2018). "El fin de la compatibilidad con OpenGL, además de otras actualizaciones que Apple no compartió en el discurso de apertura" . Ars Technica . Consultado el 19 de octubre de 2020 .
  61. ^ "Vulkan y OpenGL ES más rápido, en iOS y macOS" . Fundido . Consultado el 19 de octubre de 2020 .
  62. ^ Los autores del proyecto ANGLE (14 de octubre de 2020). "google / angle: una implementación compatible con OpenGL ES para Windows, Mac, Linux, iOS y Android" . GitHub . Consultado el 17 de diciembre de 2020 .
  63. ^ "Zink" . La documentación más reciente de Mesa 3D Graphics Library .
  64. ^ Dingman, Hayden (3 de marzo de 2015). "Conoce a Vulkan, la poderosa tecnología de juegos independiente de la plataforma que apunta a DirectX 12" . PC World . Consultado el 3 de marzo de 2015 .
  65. ^ Bright, Peter (3 de marzo de 2015). "Khronos presenta Vulkan: OpenGL construido para sistemas modernos" . Ars Technica . Consultado el 3 de marzo de 2015 .
  66. ^ "Khronos anuncia la iniciativa OpenGL de próxima generación" . AnandTech . Consultado el 20 de agosto de 2014 .
  67. ^ "OpenGL 4.5 lanzado, OpenGL de próxima generación presentado: asesino de Mantle multiplataforma, competidor DX12" . Consultado el 20 de agosto de 2014 .
  68. ^ "Khronos publica sus diapositivas sobre OpenGL-Next" . Phoronix . Consultado el 22 de agosto de 2014 .

Lectura adicional [ editar ]

  • Shreiner, Dave; Vendedores, Graham; et al. (30 de marzo de 2013). Guía de programación de OpenGL: la guía oficial para aprender OpenGL . Versión 4.3 (8a ed.). Addison-Wesley. ISBN 978-0-321-77303-6.
  • Vendedores, Graham; Wright, Richard S .; Haemel, Nicholas (31 de julio de 2013). OpenGL SuperBible: Tutorial y referencia completos (6ª ed.). Addison-Wesley. ISBN 978-0-321-90294-8.
  • Rost, Randi J. (30 de julio de 2009). Lenguaje de sombreado OpenGL (3ª ed.). Addison-Wesley. ISBN 978-0-321-63763-5.
  • Lengyel, Eric (2003). La guía de extensiones de OpenGL . Charles River Media. ISBN 1-58450-294-0.
  • Junta de Revisión de Arquitectura OpenGL ; Shreiner, Dave (2004). Manual de referencia de OpenGL: el documento de referencia oficial de OpenGL . Versión 1.4. Addison-Wesley. ISBN 0-321-17383-X.
  • Junta de Revisión de Arquitectura OpenGL ; Shreiner, Dave; et al. Guía de programación de OpenGL: la guía oficial para aprender OpenGL . Versión 2 (5ª ed.). Addison-Wesley. ISBN 0-321-33573-2.

Enlaces externos [ editar ]

  • Página web oficial
  • Descripción general de OpenGL y Wiki de OpenGL.org con más información sobre enlaces de lenguaje OpenGL
  • Sitio web OpenGL de SGI
  • OpenGL en Curlie
  • Khronos Group, Inc.
  • Angel, Edward y Shreiner, Dave (2013). "Introducción a la programación OpenGL" . YouTube . Universidad SIGGRAPH.