fbpx
Wikipedia

OpenGL

OpenGL (Open Graphics Library) es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 1992[2]​ y se usa ampliamente en CAD, realidad virtual, representación científica, visualización de información y simulación de vuelo. También se usa en desarrollo de videojuegos, donde compite con Direct3D en plataformas Microsoft Windows.

OpenGL ES 3
Información general
Tipo de programa API
Autor Silicon Graphics
Desarrollador Khronos Group
Lanzamiento inicial 01 de 1992
Licencia Diversas
Información técnica
Programado en C
Versiones
Última versión estable 4.6[1]( 31 de julio de 2017 (4 años, 8 meses y 9 días))
Lanzamientos
IRIS GL y PHIGS
OpenGL ES 3
Vulkan
Enlaces
Sitio web oficial

Especificación

Fundamentalmente OpenGL es una especificación, es decir, un documento que describe un conjunto de funciones y el comportamiento exacto que deben tener. Partiendo de ella, los fabricantes de hardware crean implementaciones, que son bibliotecas de funciones que se ajustan a los requisitos de la especificación, utilizando aceleración hardware cuando es posible. Dichas implementaciones deben superar unos tests de conformidad para que sus fabricantes puedan calificar su implementación como conforme a OpenGL y para poder usar el logotipo oficial de OpenGL.

Hay implementaciones eficientes de OpenGL para Mac OS, Microsoft Windows, GNU/Linux, varias plataformas Unix y PlayStation 4. Existen también varias implementaciones en software que permiten ejecutar aplicaciones que dependen de OpenGL sin soporte de aceleración hardware. Es destacable la biblioteca de software libre / código abierto Mesa 3D, una API de gráficos sin aceleración hardware y completamente compatible con OpenGL. Sin embargo, para evitar los costes de la licencia requerida para ser denominada formalmente como una implementación de OpenGL, afirma ser simplemente una API muy similar.

La especificación OpenGL era revisada por el OpenGL Architecture Review Board (ARB), fundado en 1992. El ARB estaba formado por un conjunto de empresas interesadas en la creación de una API consistente y ampliamente disponible. Microsoft, uno de los miembros fundadores, abandonó el proyecto en 2003.

El 21 de septiembre de 2006 se anunció que el control de OpenGL pasaría del ARB al Grupo Khronos.[3]​ Con ello se intentaba mejorar el marketing de OpenGL y eliminar las barreras entre el desarrollo de OpenGL y OpenGL ES.[4]​ ARB se convirtió dentro de Khronos en el OpenGL ARB Working Group.[5]​ El subgrupo de Khronos que gestiona la especificación de OpenGL se denomina OpenGL ARB Working Group.[6]​ Para una relación de los miembros que componen el OpenGL ARB Working Group, véase el apartado Miembros del Grupo Khronos. El gran número de empresas con variados intereses que han pasado tanto por el antiguo ARB como por el grupo actual han hecho de OpenGL una API de propósito general con un amplio rango de posibilidades.

Mark Segal y Kurt Akeley fueron los autores de la especificación original de OpenGL. Chris Frazier fue el editor de la versión 1.1. Jon Leech ha editado las versiones desde 1.2 hasta la presente 3.0.[7]

Diseño

OpenGL tiene dos propósitos esenciales:

  • Ocultar la complejidad de la interfaz con las diferentes tarjetas gráficas, presentando al programador una API única y uniforme.
  • Ocultar las diferentes capacidades de las diversas plataformas hardware, requiriendo que todas las implementaciones soporten la funcionalidad completa de OpenGL (utilizando emulación software si fuese necesario).

El funcionamiento básico de OpenGL consiste en aceptar primitivas tales como puntos, líneas y polígonos, y convertirlas en píxeles. Este proceso es realizado por una pipeline gráfica conocida como Máquina de estados de OpenGL.[8]​ La mayor parte de los comandos de OpenGL bien emiten primitivas a la pipeline gráfica o bien configuran cómo la pipeline procesa dichas primitivas. Hasta la aparición de la versión 2.0 cada etapa de la pipeline ejecutaba una función prefijada, resultando poco configurable. A partir de la versión 2.0 algunas etapas son programables usando un lenguaje de programación llamado GLSL.

OpenGL es una API basada en procedimientos de bajo nivel que requiere que el programador dicte los pasos exactos necesarios para renderizar una escena. Esto contrasta con las API descriptivas, donde un programador sólo debe describir la escena y puede dejar que la biblioteca controle los detalles para representarla. El diseño de bajo nivel de OpenGL requiere que los programadores conozcan en profundidad la pipeline gráfica, a cambio de darles libertad para implementar algoritmos gráficos novedosos.

OpenGL ha influido en el desarrollo de las tarjetas gráficas, promocionando un nivel básico de funcionalidad que actualmente es común en el hardware comercial; algunas de esas contribuciones son:

  • Primitivas básicas de puntos, líneas y polígonos rasterizados.
 
Proceso en la pipeline de gráficos.

Una descripción somera del proceso en la pipeline gráfica podría ser:[9]

  1. Evaluación, si procede, de las funciones polinomiales que definen ciertas entradas, como las superficies NURBS, aproximando curvas y la geometría de la superficie.
  2. Operaciones por vértices, transformándolos, iluminándolos según su material y recortando partes no visibles de la escena para producir un volumen de visión.
  3. Rasterización, o conversión de la información previa en píxeles. Los polígonos son representados con el color adecuado mediante algoritmos de interpolación.
  4. Operaciones por fragmentos o segmentos, como actualizaciones según valores venideros o ya almacenados de profundidad y de combinaciones de colores, entre otros.
  5. Por último, los fragmentos son volcados en el Frame buffer.

Muchas tarjetas gráficas actuales proporcionan una funcionalidad superior a la básica aquí expuesta, pero las nuevas características generalmente son mejoras de esta pipeline básica más que cambios revolucionarios de ella.

Ejemplo

Nota: Cuidado, este ejemplo es únicamente válido con OpenGL 2.1 y versiones anteriores. Hace uso intensivo de funciones actualmente anticuadas.

Primero, limpiamos el buffer de color para empezar en un canvas negro:

glClear( GL_COLOR_BUFFER_BIT ); 

Se establece la matriz modelview, que controla la posición de la cámara respecto a las primitivas que renderizamos. La retrasamos 3 unidades en el eje Z, dejándola apuntando hacia el origen:

glMatrixMode( GL_MODELVIEW ); /* Los comandos para matriz modificarán ''modelview'' */ glLoadIdentity(); /* Inicializar ''modelview'' */ glTranslatef( 0, 0, -3 ); /* Desplazar 3 unidades en el eje Z */ 

La matriz projection controla la perspectiva aplicada a las primitivas; se utiliza de forma similar a la anterior:

glMatrixMode( GL_PROJECTION ); /* Los comandos para matriz modificarán ''projection'' */ glLoadIdentity(); /* Inicializar ''projection'' */ glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Aplicar una proyección en perspectiva */ 

Por último, se dibuja un polígono (un cuadrado verde orientado en el plano XY):

glBegin( GL_POLYGON ); /* Inicio de polígono */ glColor3f( 0, 1, 0 ); /* Establecer color actual a verde */ glVertex3f( -1, -1, 0 ); /* Establecer un vértice */ glVertex3f( -1, 1, 0 ); /* Establecer un vértice */ glVertex3f( 1, 1, 0 ); /* Establecer un vértice */ glVertex3f( 1, -1, 0 ); /* Establecer un vértice */ glEnd(); /* Fin de polígono */ 

Historia

En los años 1980 el desarrollo de software que fuese compatible con un amplio rango de hardware gráfico era un verdadero reto para los desarrolladores. Había que tratar con interfaces muy diferentes y escribir drivers específicos para cada tipo de hardware, resultando muy costoso; por ello, se subcontrataban equipos de programadores para agilizar el desarrollo. Dado que cada equipo trabajaba por separado en sus interfaces, se producía mucho código redundante. Además, era un proceso caro, por lo que varios grupos innovadores aceptaron el reto de encontrar un método mejor.

Al principio de los años 1990 SGI era un grupo de referencia en gráficos 3D para estaciones de trabajo. Suya era la API IRIS GL,[10]​ considerada puntera en el campo y estándar de facto, llegando a eclipsar a PHIGS, basada en estándares abiertos. IRIS GL se consideraba más fácil de usar y, lo más importante, soportaba renderizado en modo inmediato. Además, PHIGS, aparte de su mayor dificultad, fue considerada inferior a IRIS GL respecto a funcionalidad y capacidad.

La competencia de SGI (Sun Microsystems, Hewlett-Packard e IBM, entre otros) fue capaz de introducir en el mercado hardware 3D compatible con el estándar PHIGS mediante extensiones. Esto fue reduciendo la cuota de mercado de SGI conforme iban entrando diferentes proveedores en el mercado. Por todo ello, en un intento de fortalecer su influencia en el mercado, SGI decidió convertir el estándar IRIS GL en un estándar abierto.

SGI observó que la API IRIS GL no podía ser abierta debido a conflictos de licencias y patentes; también contenía funciones no relevantes para los gráficos 3D como API para ventanas, teclado o ratón (en parte, porque fue desarrollada antes de la aparición del X Window System o de los sistemas NeWS de Sun). Además, mientras iba madurando el soporte del mercado para el nuevo estándar, se pretendía mantener los antiguos clientes mediante bibliotecas añadidas como Iris Inventor o Iris Performer.

El resultado de todo lo anterior fue el lanzamiento del estándar OpenGL.

Algunos de los logros que se consiguieron fueron:

  • Estandarizar el acceso al hardware.
  • Trasladar a los fabricantes la responsabilidad del desarrollo de las interfaces con el hardware.
  • Delegar las funciones para ventanas al sistema operativo.

Con la variedad de hardware gráfico existente, lograr que todos hablasen el mismo lenguaje obtuvo un efecto importante, ofreciendo a los desarrolladores de software una plataforma de alto nivel sobre la que trabajar.

En 1992,[11]​ SGI lideró la creación del OpenGL Architecture Review Board (OpenGL ARB), grupo de empresas que mantendría y extendería la especificación OpenGL en los años siguientes. OpenGL evolucionó desde IRIS GL, superando su problema de dependencia del hardware al ofrecer emulación software para aquellas características no soportadas por el hardware del que se dispusiese. Así, las aplicaciones podían utilizar gráficos avanzados en sistemas relativamente poco potentes.

En 1994 SGI barajó la posibilidad de lanzar un producto denominado OpenGL++, el cual incluía elementos como una API de scene-graph (basada presumiblemente en la tecnología de Performer). Dicha especificación fue divulgada entre unos pocos grupos interesados, pero nunca apareció finalmente como producto.[12]

En 1995 Microsoft lanzó Direct3D, que se convertiría en el principal competidor de OpenGL. El 17 de diciembre de 1997[13]​ Microsoft y SGI iniciaron el proyecto Fahrenheit, esfuerzo cooperativo con el objetivo de unificar las interfaces de OpenGL y Direct3D (y añadir también una API scene-graph). En 1998 se uniría al proyecto Hewlett-Packard.[14]​ Pese a tener un principio prometedor en estandarizar las API de gráficos 3D, debido a restricciones financieras en SGI y la falta general de apoyo por parte de la industria, fue finalmente abandonado en 1999.[15]

En la GDC de 2015, Khronos Group anunció la API sucesora de OpenGL, llamada Vulkan.[16][17][18]​ Inicialmente, fue presentada por Khronos como "la iniciativa OpenGL de próxima generación", pero luego el nombre fue descartado, quedando Vulkan como definitivo.[19]​ Vulkan está basado en Mantle, otra API de la empresa AMD, cuyo código fue cedido a Khronos con la intención de generar un estándar abierto similar a OpenGL, pero de bajo nivel.[16][20][21][22][23][24]

Versiones

OpenGL 1.0

Publicada en enero de 1992.
La primera especificación de OpenGL fue publicada por Mark Segal y Kurt Akeley.

OpenGL 1.1

Publicada en enero de 1997.
OpenGL 1.1 se enfocó en el soporte de texturas y formatos de textura sobre hardware de GPU.
Tarjetas gráficas soportadas: todas

Extensión Id de extensión Funciones
Vertex Arrays EXT_vertex_array glVertexPointer, glColorPointer, glNormalPointer
Polygon Offsets (depth biasing) EXT_polygon_offset glPolygonOffset
RGBA logical blending EXT_blend_logic_op glBlendFunc
Texture Copy and Sub-copy EXT_subtexture, EXT_copy_texture glTexSubImage1D/2D/3D
Texture Formats EXT_texture RGB, LUMINANCE, ALPHA, INTENSITY (in glTexImage2D)
Texture Objects EXT_texture_object glGenTextures, glBindTextures

OpenGL 1.2

Publicada el 16 de marzo de 1998.
OpenGL 1.2 se enfocó en el soporte de texturas de volumen, píxeles empaquetados, reescalado normal, muestreo de texturas clamped/edge y procesamiento de imágenes.
Tarjetas gráficas soportadas: Rage 128, Rage 128 GL, Rage XL/XC, Rage 128 Pro, Rage Fury MAXX, y todas las tarjetas posteriores.

Extensión Id de extensión Funciones
3D Volume Textures GL_EXT_texture3D glTexImage3DEXT
BGRA Texture Format GL_EXT_bgra BGR_EXT, BGRA_EXT (in glTexImage2D)
Packed Pixels GL_EXT_packed_pixels
Normal Rescaling GL_EXT_rescale_normal
Separate Specular Color GL_EXT_separate_specular_color
Texture Coord Edge Clamping SGIS_texture_edge_clamp
Texture LOD Control SGIS_texture_lod
Draw Range Elements EXT_draw_range_elements glDrawRangeElements
Image Processing Subset EXT_color_table, EXT_convolution, SGI_color_matrix, EXT_histogram, EXT_blend_color, EXT_blend_minmax

OpenGL 1.2.1

Publicada el 14 de octubre de 1998
OpenGL 1.2.1 fue un lanzamiento menor publicado después de OpenGL 1.2 (16 de marzo de 1998) el cual añadió multi-textura, o unidades de textura, al canal de renderizado. Esto permitió texturas múltiples que son combinadas por píxel durante la rasterización.
Tarjetas gráficas soportadas: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX, y todas las tarjetas posteriores

Extensión Id de extensión Funciones
Multi-Texturing SGIS_multitexture glActiveTextureARB, glClientActiveTextureARB

OpenGL 1.3

Publicada el 14 de agosto de 2001.
OpenGL 1.3 añadió soporte para textura cubemap, múltiples texturas, multi-muestreo y operaciones de combinación de unidades de textura (añadir, combinar, dot3, border clamp).
Tarjetas gráficas soportadas: Radeon 32/36, Radeon 64/7200, Radeon 7000, Radeo AIW, Radeon 7500, Radeon IGP 320M, Radeon IGP 345M, ES1000, Radeon 8500, Radeon 9000/Pro, Radeon 9100/9200/9250 (Pro & IGP), GeForce 3, GeForce 4Ti, GeForce FX, y todas las tarjetas posteriores.

Extensión Id de extensión Funciones
Compressed Textures GL_ARB_texture_compression
Cubemaps GL_EXT_texture_cube_map TEXTURE_CUBE_MAP_EXT
Multi-Sampling GL_ARB_multisample
Texture Add GL_ARB_texture_env_add
Texture Combine GL_ARB_texture_env_combine
Texture Dot3 GL_ARB_texture_env_dot3
Texture Border Clamping GL_ARB_texture_border_clamp
Matrix Transpose GL_ARB_transpose_matrix

OpenGL 1.4

Publicada el 24 de julio de 2002.
OpenGL 1.4 añadió soporte de sombreado por hardware, coordenadas niebla, generación automática de mipmaps, y modos de textura adicionales.
Tarjetas gráficas soportadas: Quadro DCC, Quadro4 380 XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL, 750XGL, 900XGL, 980XGL, y todas las tarjetas posteriores.

Extensión Id de extensión Funciones
Automatic Mipmaps SGIS_generate_mipmap
Blend Squaring Functions GL_NV_blend_square
Depth Textures GL_ARB_depth_texture DEPTH_COMPONENT16/24/32_ARB
Hardware Shadowing Z-depth GL_ARB_shadow COMPARE_R_TO_TEXTURE
Fog Coordinates GL_EXT_fog_coord
Multiple Draw Arrays GL_EXT_multi_draw_arrays
Point Parameters GL_ARB_point_parameter
Secondary Color GL_EXT_secondary_color
Separate Blend Functions GL_EXT_blend_func_separate
Stencil Wrapping GL_EXT_stencil_wrap
Texture Crossbar Environment Mode GL_ARB_texture_env_crossbar
Texture LOD Bias GL_EXT_texture_lod_bias
Texture Mirrored Repeat GL_ARB_texture_mirrored_repeat
Window Raster Position GL_ARB_window_pos

OpenGL 1.5

Publicada el 29 de julio de 2003.
OpenGL 1.5 añadió soporte para objetos de búfer de vértice (VBOs), consultas de oclusión, y amplió las funciones de sombreado.
Tarjetas gráficas soportadas: Radeon X800, Radeon 9600, Radeon 9700, Radeon 9800, GeForce FX, y todas las tarjetas posteriores.

Extensión Id de extensión Funciones Más Información
VBOs Vertex Buffer Objects GL_ARB_vertex_buffer_object glBindBufferARB, glBufferDataARB, glGenBuffersARB songho
Occlusion Queries GL_ARB_occlusion_query
Extended Shadow Functions GL_EXT_shadow_funcs

OpenGL 2.0

Publicada el 7 de septiembre de 2004.
OpenGL 2.0 añadió soporte para un lenguaje ensamblador basado en GPU verdadero, llamado ARB (diseñado por el Architecture Review Board), que se convertiría en el estándar para vertex y fragment shaders. Las tarjetas publicadas con OpenGL 2.0 fueron las primeras en ofrecer shaders programables por el usuario.
Tarjetas soportadas: Radeon 9650, Radeon 9500, Radeon 9500/9550/9600/9700/9800 (Pro, SE, XT), Radeon X1050, Radeon Xpress 200 / 1100, Radeon X300, Radeon X550, Radeon X600/Pro, Radeon X700, Radeon X800 (VE, SE, GT, Pro), Radeon X850, Radeon Xpress 1250, Radeon X1200, Radeon X1250, Radeon 2100, Radeon X1300, X1550, X1600, X1650, X1800, X1900, X1950 (Pro, XT, GT), GeForce 6800, Quadro 600, Quadro FX 500, Quadro FX 700, Quadro FX 1000, FX 2000, FX 3000, Quadro FX 1400, Quadro FX 1500, Quadro FX 3450, Quadro FX 3500, Quadro FX 4500X2, Quadro FX4500 SDI, y todas las tarjetas posteriores.

OpenGL 2.0 fue concebido por 3Dlabs para abordar las preocupaciones de que OpenGL estaba estancado y carecía de una dirección fuerte. 3Dlabs propuso una serie de importantes adiciones a la norma. La mayoría de estas fueron, en ese momento, rechazadas por el ARB o de otra manera nunca llegaron a realizarse en la forma que 3Dlabs propuso. Sin embargo, su propuesta de un lenguaje de sombreado de estilo C se completó con el tiempo, resultando en la formulación actual del GLSL (OpenGL Shading Language, también slang).Al igual que los lenguajes de sombreado estilo-ensamblador que trataba de sustituir, permite al programador sustituir los fixed-function vertex y el fragment pipe con shaders, aunque esta vez escritos en un lenguaje tipo C de alto nivel.

El diseño de GLSL se destacó por hacer relativamente pocas concesiones a las limitaciones del hardware entonces disponible, lo que recordaba a la tradición anterior de OpenGL estableciendo un objetivo ambicioso, con visión de futuro para los aceleradores 3D en lugar de simplemente seguir el estado de hardware disponible actualmente. La última especificación OpenGL 2.0[25]​ incluye soporte para GLSL.

Extensión ID de extensión Funciones
Shader Objects GL_ARB_shader_objects
Vertex Programs GL_ARB_vertex_program glBindProgramARB, glGenProgramsARB
Vertex Shaders (VS) GL_ARB_vertex_shader
Fragment Shaders (FS) GL_ARB_fragment_shader
Multiple Render Targets GL_ARB_draw_buffers glDrawBuffers
Rectangular Texture GL_ARB_texture_rectangle GL_TEXTURE_RECTANGLE_ARB
Point Sprites GL_ARB_point_sprite
Separate Blend Equation GL_EXT_blend_equation_separate
Separate Stencil GL_EXT_stencil_two_side

OpenGL 2.1

El 2 de agosto de 2006 se publicó OpenGL 2.1. Siendo completamente compatible con las versiones anteriores,[26]​ aporta además nuevas características como:

  • Revisión 1.20 del OpenGL Shading Language (GLSL).
  • Comandos que soportan la especificación de matrices no cuadradas.
  • Objetos Pixel buffer para acelerar el tráfico de imágenes en los buffers en comandos como glTexImage2D y glReadPixels.
Esta funcionalidad corresponde a la extensión ARB_pixel_buffer_object.
Esta funcionalidad corresponde a la extensión GL_EXT_texture_sRGB.

OpenGL 3.0

La versión OpenGL 3.0[27]​ fue publicada el 11 de agosto de 2008.

Tarjetas compatibles: GeForce 8 Series ATI HD Radeon 2000 Series. (Es decir, sólo el hardware compatible con Direct3D 10.0 es capaz de ejecutar OpenGL 3.0.)

Es compatible hacia atrás con todas las versiones anteriores de OpenGL, aunque introduce un nuevo mecanismo para despreciar (deprecate en inglés) funcionalidad obsoleta y así poder simplificar la API en versiones futuras.

Las principales novedades son:

  • OpenGL Shading Language versión 1.30 (GLSL)
  • Vertex Array Objects.
  • Framebuffer Objects más flexibles.
  • Texturas y render buffers en coma flotante de 32-bits.
  • Soporte para formato en coma flotante de 16-bits para vértices y píxeles.
  • Capacidad de almacenar vértices en un buffer tras haber sido transformados.
  • Texture arrays
  • Z-buffer en coma flotante de 32-bits.

OpenGL 3.1

La versión 3.1 (Longs Peak Reloaded) fue publicada el 24 de marzo de 2009, y presenta una serie de características para hacer la API más conveniente de utilizar, además de las características orientadas al rendimiento:

  • Lenguaje de Sombreado OpenGL revisión 1.40 (GLSL)
  • Texture Buffer Objects - un tipo de nueva textura que contiene una matriz unidimensional de texels
  • Uniform Buffer Objects para compartir o actualizar datos de forma rápida
  • Texturas normalizadas firmadas (rango ± 1,0)
  • Un mínimo de 16 unidades de textura accesibles por el Vertex Shader
  • Reinicio de primitiva
  • Instancias - dibujo de objetos en múltiples ocasiones a través de la reutilización de los vertex data
  • CopyBuffer API para copia rápida de datos, utilizada en conjunto con OpenCL

Con la liberación de la especificación OpenGL 3.1, también fue publicada una extensión de compatibilidad que permite a los desarrolladores acceder a la funcionalidad de OpenGL 1.X/2.X eliminada en OpenGL 3.1. En particular, se mantiene funcionalidad legacy para una amplia línea de soporte.

Funcionalidad heredada eliminada incluye:

  • Todas las opciones de función fija
  • Modo directo
  • Color index mode, por ejemplo, formatos de pixel con paletas de colores

OpenGL 3.2

La versión 3.2 fue publicada el 3 de agosto de 2009. Incluye las siguientes características:

  • OpenGL Shading Language versión 1.50 (GLSL)
  • Soporte de Geometría Shader
  • BGRA vértice componente de pedidos
  • Fragmento Shader coordinar el control de convención
  • Perfecta mapa cubo filtrado
  • Fragmento de profundidad de sujeción
  • Multisampled texturas y textura de las muestras para lugares específicos de la muestra
  • Objetos de sincronización y cerca

OpenGL 3.3

Publicada el 11 de marzo de 2010

OpenGL 3.3, simultáneamente lanzado con OpenGL 4.0 y complementada por un conjunto de nuevas extensiones ARB, porta tanta funcionalidad como es posible desde la especificación OpenGL 4.0 para su uso en la generación anterior de hardware GPU. Incluye GLSL 3.30.

OpenGL 4.0

Publicada el 11 de marzo de 2010
Tarjetas compatibles: Radeon HD serie 5000, nVidia GTX serie 400;

Características:[28]

  • OpenGL Shading Language versión 4.00 (GLSL)
  • Dos fases de sombreado que permiten a la GPU descargar el teselado geométrico de la CPU.
  • Per-shaders fragmento de la muestra y de sombreado programable posiciones fragmento de entrada para mayor calidad de representación y anti-aliasing de flexibilidad.
  • Subrutinas Shader para una flexibilidad de programación aumentada significativamente.
  • Separación del estado de textura y de los datos de textura mediante la adición de un nuevo tipo de objeto llamado sampler objetos.
  • Dibujo de los datos generados por el API de OpenGL o API externos, tales como OpenCL, sin intervención de la CPU.
  • Operaciones de 64-bit de coma flotante de doble precisión de sombreado y entradas / salidas para prestar mayor precisión y calidad.
  • Mejoras de rendimiento, tales como shaders de geometría en instancias, instancias matrices y una consulta de nuevo temporizador.

OpenGL 4.1

Anunciado el 26 de julio de 2010[29]
Tarjetas soportadas: Nvidia GeForce 400 series, Nvidia GeForce 500 series, ATI Radeon HD 5000 series, AMD Radeon HD 6000 Series

Esta nueva versión añade estas características adicionales a la especificación, muchas de las cuales ayudan a ponerla en consonancia con las de Direct3D 11:

  • Lenguaje de sombreado OpenGL (GLSL) 4.1
  • Compatibilidad completa con OpenGL para sistemas integrados (OpenGL ES) 2.0
  • Reducción de tiempos de recompilación
  • La capacidad de vincular los programas de forma individual a las cinco etapas programables (Vertex, Control de mosaico, Evaluación del Teselado, la Geometría, y Fragmento)
  • Mejoras a la coma flotante general de 64 bits compatible con agregado en OpenGL 4.0

OpenGL 4.2

Publicado el 8 de agosto de 2011[30]
Tarjetas soportadas: Nvidia GeForce 400 series, Nvidia GeForce 500 series, ATI Radeon HD 5000 series, AMD Radeon HD 6000 Series, ATI Radeon HD 7000 series

  • Soporte para shaders con contadores atómicos y load/store/atomic read-modify-write operations en un único nivel de una textura.
  • Capacidad de capturar geometría de la GPU en mosaico y dibujar varias instancias de una "transform feedback " para que los objetos complejos sean fácilmente replicados o cambiados de posición.
  • OpenGL puede modificar ahora un subconjunto arbitrario de una textura comprimida sin necesidad de volver a descargar toda la textura a la GPU llevando esto a un mayor rendimiento.
  • Soporte para empaquetar varios valores de 8 bits y 16 bits en un único valor de 32 bits, llevando a un procesamiento más eficiente del shader y presión reducida en la memoria y el ancho de banda.

OpenGL 4.3

Publicado el 6 de agosto de 2012[31]​ Tarjetas Soportadas: Nvidia GeForce 400 series, Nvidia GeForce 500 series, Nvidia GeForce 600 series, ATI Radeon HD 8000 series

  • Incluye la versión más actualizada de GLSL en su versión 4.30 (OpenGL Shading Language).
  • Cálculo de shaders que aprovechan el paralelismo de la GPU para todo lo relacionado con geometría o gráficos.
  • Almacenamiento en búfer de objetos Shader.
  • Consultas de parámetros de texturas para hallar los límites que las plataformas pueden tener para procesar las mismas.
  • Alta calidad de comprensión en texturas ETC2/EAC como característica estándar.
  • Compatibilidad total con las API de OpenGL ES 3.0.
  • Capacidades de depuración que permiten recibir mensajes de depuración mientras se desarrolla la aplicación.
  • Vistas de texturas para análisis de las mismas en diferentes formas sin replicación de datos.
  • Incrementa la seguridad de la memoria.
  • Una extensión multi-aplicación que añade robustez al sistema, e impide que las aplicaciones que provoquen un fallo y tengan que resetearse afecten a otras que estén en ejecución.

OpenGL 4.4

Publicado el 22 de julio de 2013[32]

  • Buffer Placement Control
  • Efficient Asynchronous Queries
  • Shader Variable Layout
  • Efficient Multiple Object Binding
  • Streamlined Porting of Direct3D applications
  • Bindless Texture Extension
  • Sparse Texture Extension

OpenGL 4.5

Publicado el 11 de agosto de 2014[33][34]

Tarjetas Soportadas: Nvidia GeForce 400 series y nuevas, también Tegra K1 y Tegra X1.[35][36]

  • Direct State Access (DSA)[37]
  • Flush Control - Mejorado el sistema de multiproceso.
  • Robustness - Mejoras en el WebGL.
  • OpenGL ES 3.1 API y compatibilidad de shaders.

Documentación

La popularidad de OpenGL se debe en parte a su detallada documentación oficial. El OpenGL ARB ha publicado una serie de manuales actualizados conforme la API iba evolucionando. Son fácilmente reconocibles (y conocidos) por el color de sus tapas:

Libro de referencia y tutorial. Considerado libro de cabecera para programadores de OpenGL.
En esencia, una copia de la páginas del man de OpenGL.
Incluye un póster desplegable con el diagrama de la estructura de una implementación ideal de OpenGL.
  • El Libro Verde - The Green Book: Programming OpenGL for the X Window System. ISBN 0-201-48359-9
Libro sobre la interfaz X11 y GLUT.
  • El Libro Alpha (de tapa blanca) - The Alpha Book: OpenGL Programming for Windows 95 and Windows NT. ISBN 0-201-40709-4
Libro sobre la interfaz de OpenGL en plataformas de Microsoft Windows.

Para OpenGL 2.0 y posteriores:

Libro de referencia y tutorial para GLSL.

Extensiones

El estándar OpenGL permite a los fabricantes añadir nuevas funcionalidades adicionales mediante extensiones conforme aparecen nuevas tecnologías. Dichas extensiones pueden introducir nuevas funciones y constantes, y suavizar o incluso eliminar restricciones en funciones ya existentes. Cada fabricante dispone de una abreviatura que le identifica en el nombre de sus nuevas funciones o constantes. Por ejemplo, la abreviatura de NVIDIA (NV) aparece en la definición de su función glCombinerParameterfvNV() y su constante GL_NORMAL_MAP_NV.

Es posible que varios fabricantes se pongan de acuerdo en implementar la misma funcionalidad extendida. En ese caso, se usa la abreviatura EXT. Incluso puede ocurrir que el ARB adopte la extensión, convirtiéndose así en estándar y utilizando la abreviatura ARB en sus nombres. La primera extensión ARB fue GL_ARB_multitexture, presentada en la versión 1.2.1. Siguiendo el camino marcado por la extensión, el multitexturing no es ya una extensión opcional, sino que entró a formar parte del núcleo de OpenGL desde la versión 1.3.

Antes de usar una extensión, los programas deben comprobar su disponibilidad y, después, acceder a las nuevas funcionalidades ofrecidas. Este proceso es dependiente de la plataforma, pero bibliotecas como GLEW y GLEE lo simplifican.

Las especificaciones para la mayor parte de las extensiones pueden encontrarse en el registro oficial de extensiones.[38]

Bibliotecas de utilidades

Se han programado varias bibliotecas externas que añaden características no disponibles en el propio OpenGL. Algunas de ellas son:

  • GLU: Ofrece funciones de dibujo de alto nivel basadas en primitivas de OpenGL. Las funciones de GLU se reconocen fácilmente pues todas empiezan con el prefijo glu.
  • GLUT: API multiplataforma que facilita una rudimentaria funcionalidad para el manejo de ventanas e interacción por medio de teclado y ratón.
  • GLUI: Interfaz de usuario basada en GLUT; proporciona elementos de control tales como botones, cajas de selección y spinners. Es independiente del sistema operativo, sustentándose en GLUT para manejar los elementos dependientes del sistema.

Referencias para lenguajes de programación (bindings)

Para enfatizar las características multilenguaje y multiplataforma de OpenGL, se han desarrollado varios bindings en muchos lenguajes. Algunos de los lenguajes para los que están disponibles dichos bindings son:

Miembros del Grupo Khronos

En 2008, algunos de los miembros del Grupo Khronos son:

Para una lista completa y actualizada de los miembros del proyecto, véanse las listas de miembros,[55]​ contribuyentes[56]​ y académicos[57]​ del Grupo Khronos.[58]

Véase también

Bibliotecas adicionales para OpenGL

  • GLU - Funciones adicionales (NURBS, esferas, discos, etc)
  • GLUT - API para facilitar desarrollo con OpenGL y gestionar ventanas y eventos
  • GLUI - Biblioteca de interfaz basada en GLUT
  • GLX - Interfaz de OpenGL con el sistema X Window System

Otras interfaces de gráficos

Aplicaciones OpenGL

Referencias

  1. https://www.opengl.org/documentation/current_version/
  2. «SGI - OpenGL Overview». 
  3. . Archivado desde el original el 3 de mayo de 2008. 
  4. . Archivado desde el original el 20 de mayo de 2008. Consultado el 14 de enero de 2007. 
  5. «OpenGL Architecture Review Board Working Group». 
  6. «OpenGL Architecture Review Board Working Group». 
  7. «Especificación de OpenGL, versión 3.0». 
  8. http://www.opengl.org/documentation/specs/version1.1/state.pdf
  9. «Especificación del Sistema Gráfico OpenGL Versión 2.1». 
  10. . Archivado desde el original el 29 de septiembre de 2007. Consultado el 16 de febrero de 2007. 
  11. «Creación del OpenGL ARB». 
  12. «Fin de OpenGL++». 
  13. . Archivado desde el original el 27 de septiembre de 2007. 
  14. . Archivado desde el original el 15 de enero de 2008. Consultado el 15 de enero de 2007. 
  15. «Fin del Proyecto Fahrenheit». 
  16. «More on Vulkan and SPIR - V: The future of high-performance graphics». Khronos Group. p. 10. Consultado el 27 de junio de 2015. «Thanks AMD!» 
  17. «Vulkan : Graphics and compute Belong Together» (PDF). Khronos.org. March 2015. Consultado el 5 de marzo de 2015. 
  18. «Vulkan - Graphics and compute belong together». Khronos.org. Consultado el 5 de marzo de 2015. 
  19. Batchelor, James. «glNext revealed as Vulkan graphics API». develop-online.net. 
  20. Mah Ung, Gordon. «Mantle is a Vulkan: AMD's dead graphics API rises from the ashes in OpenGL's successor». PCWorld. 
  21. . Community.amd.com. Archivado desde el original el 6 de marzo de 2015. Consultado el 5 de marzo de 2015. 
  22. Hruska, Joel. «Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts». ExtremeTech. Consultado el 5 de marzo de 2015. 
  23. «AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL». Wccftech.com. 20 de junio de 2014. Consultado el 5 de marzo de 2015. 
  24. Kirsch, Nathan. «Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL». Legit Reviews. Consultado el 5 de marzo de 2015. 
  25. http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
  26. «Características de OpenGL 2.1». 
  27. http://www.opengl.org/registry/doc/glspec30.20080811.pdf
  28. Khronos webmaster (11 de marzo de 2010). «Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0». Khronos Press Releases. Archivado desde el original el 25 de agosto de 2011. Consultado el 11 de marzo de 2010. 
  29. «OpenGL 4.1 Specification Released». 
  30. «Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification». 
  31. «Khronos Releases OpenGL 4.3 Specification with Major Enhancements». 
  32. «Khronos Releases OpenGL 4.4 Specification». 
  33. «Khronos Group Announces Key Advances in OpenGL Ecosystem - Khronos Group Press Release». Consultado el 17 de abril de 2015. 
  34. Khronos Group. «OpenGL® Registry». Consultado el 17 de abril de 2015. 
  35. . Ustream. Archivado desde el original el 17 de mayo de 2015. Consultado el 17 de abril de 2015. 
  36. Mark Kilgard. «OpenGL 4.5 Update for NVIDIA GPUs». Consultado el 17 de abril de 2015. 
  37. «OpenGL 4.5 released—with one of Direct3D’s best features». Ars Technica. Consultado el 17 de abril de 2015. 
  38. . Archivado desde el original el 15 de enero de 2007. Consultado el 2009. 
  39. . Archivado desde el original el 13 de octubre de 2004. Consultado el 2009. 
  40. . Archivado desde el original el 7 de junio de 2008. Consultado el 2009. 
  41. «bindings - dsource.org». Consultado el 2009. 
  42. «derelict - dsource.org». Consultado el 2009. 
  43. . Archivado desde el original el 19 de abril de 2012. Consultado el 2009. 
  44. «f90gl: Fortran interface for OpenGL and GLUT». Consultado el 2009. 
  45. . Archivado desde el original el 12 de marzo de 2012. Consultado el 2009. 
  46. . Archivado desde el original el 11 de octubre de 2017. Consultado el 2011. 
  47. . Archivado desde el original el 21 de agosto de 2009. Consultado el 2009. 
  48. «lwjgl.org - Home of the Lightweight Java Game Library». Consultado el 2009. 
  49. «Programming Language Bindings». Consultado el 2009. 
  50. «Welcome to OpenGL for MCL». Consultado el 2009. 
  51. . Archivado desde el original el 2 de octubre de 2012. Consultado el 2009. 
  52. «PyOpenGL - The Python OpenGL Binding». Consultado el 2009. 
  53. . Archivado desde el original el 4 de marzo de 2016. Consultado el 2009. 
  54. «Khronos Promoting Members». Consultado el 2009. 
  55. «Khronos Contributing Members». Consultado el 2009. 
  56. «Khronos Academic Members». Consultado el 2009. 
  57. «The Khronos Group: Open Standards, Royalty Free, Dynamic Media Technologies». Consultado el 2009. 

Enlaces externos

  • Sitio web oficial de realtech-vr Visor de Extensiones OpenGL y Visor de Extensiones DirectX
  • Sitio web oficial de OpenGL el 26 de febrero de 2011 en Wayback Machine.
  • Sitio web de SGI sobre OpenGL
  • OpenGL en el Open Directory Project
  • Grupo Khronos
  • Tutoriales en Español de OpenGL
  • Why do game developers prefer Windows? post sobre OpenGL vs DirectX
  •   Datos: Q178570
  •   Multimedia: OpenGL

opengl, debe, confundirse, opencl, open, graphics, library, especificación, estándar, define, multilenguaje, multiplataforma, para, escribir, aplicaciones, produzcan, gráficos, interfaz, consiste, más, funciones, diferentes, pueden, usarse, para, dibujar, esce. No debe confundirse con OpenCL OpenGL Open Graphics Library es una especificacion estandar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan graficos 2D y 3D La interfaz consiste en mas de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geometricas simples tales como puntos lineas y triangulos Fue desarrollada originalmente por Silicon Graphics Inc SGI en 1992 2 y se usa ampliamente en CAD realidad virtual representacion cientifica visualizacion de informacion y simulacion de vuelo Tambien se usa en desarrollo de videojuegos donde compite con Direct3D en plataformas Microsoft Windows OpenGL ES 3Informacion generalTipo de programaAPIAutorSilicon GraphicsDesarrolladorKhronos GroupLanzamiento inicial01 de 1992LicenciaDiversasInformacion tecnicaProgramado enCVersionesUltima version estable4 6 1 31 de julio de 2017 4 anos 8 meses y 9 dias LanzamientosIRIS GL y PHIGSOpenGL ES 3VulkanEnlacesSitio web oficial editar datos en Wikidata Indice 1 Especificacion 2 Diseno 3 Ejemplo 4 Historia 5 Versiones 5 1 OpenGL 1 0 5 1 1 OpenGL 1 1 5 1 2 OpenGL 1 2 5 1 3 OpenGL 1 2 1 5 1 4 OpenGL 1 3 5 1 5 OpenGL 1 4 5 1 6 OpenGL 1 5 5 2 OpenGL 2 0 5 2 1 OpenGL 2 1 5 3 OpenGL 3 0 5 3 1 OpenGL 3 1 5 3 2 OpenGL 3 2 5 3 3 OpenGL 3 3 5 4 OpenGL 4 0 5 4 1 OpenGL 4 1 5 4 2 OpenGL 4 2 5 4 3 OpenGL 4 3 5 4 4 OpenGL 4 4 5 4 5 OpenGL 4 5 6 Documentacion 7 Extensiones 8 Bibliotecas de utilidades 9 Referencias para lenguajes de programacion bindings 10 Miembros del Grupo Khronos 11 Vease tambien 11 1 Bibliotecas adicionales para OpenGL 11 2 Otras interfaces de graficos 11 3 Aplicaciones OpenGL 12 Referencias 13 Enlaces externosEspecificacion EditarFundamentalmente OpenGL es una especificacion es decir un documento que describe un conjunto de funciones y el comportamiento exacto que deben tener Partiendo de ella los fabricantes de hardware crean implementaciones que son bibliotecas de funciones que se ajustan a los requisitos de la especificacion utilizando aceleracion hardware cuando es posible Dichas implementaciones deben superar unos tests de conformidad para que sus fabricantes puedan calificar su implementacion como conforme a OpenGL y para poder usar el logotipo oficial de OpenGL Hay implementaciones eficientes de OpenGL para Mac OS Microsoft Windows GNU Linux varias plataformas Unix y PlayStation 4 Existen tambien varias implementaciones en software que permiten ejecutar aplicaciones que dependen de OpenGL sin soporte de aceleracion hardware Es destacable la biblioteca de software libre codigo abierto Mesa 3D una API de graficos sin aceleracion hardware y completamente compatible con OpenGL Sin embargo para evitar los costes de la licencia requerida para ser denominada formalmente como una implementacion de OpenGL afirma ser simplemente una API muy similar La especificacion OpenGL era revisada por el OpenGL Architecture Review Board ARB fundado en 1992 El ARB estaba formado por un conjunto de empresas interesadas en la creacion de una API consistente y ampliamente disponible Microsoft uno de los miembros fundadores abandono el proyecto en 2003 El 21 de septiembre de 2006 se anuncio que el control de OpenGL pasaria del ARB al Grupo Khronos 3 Con ello se intentaba mejorar el marketing de OpenGL y eliminar las barreras entre el desarrollo de OpenGL y OpenGL ES 4 ARB se convirtio dentro de Khronos en el OpenGL ARB Working Group 5 El subgrupo de Khronos que gestiona la especificacion de OpenGL se denomina OpenGL ARB Working Group 6 Para una relacion de los miembros que componen el OpenGL ARB Working Group vease el apartado Miembros del Grupo Khronos El gran numero de empresas con variados intereses que han pasado tanto por el antiguo ARB como por el grupo actual han hecho de OpenGL una API de proposito general con un amplio rango de posibilidades Mark Segal y Kurt Akeley fueron los autores de la especificacion original de OpenGL Chris Frazier fue el editor de la version 1 1 Jon Leech ha editado las versiones desde 1 2 hasta la presente 3 0 7 Diseno EditarOpenGL tiene dos propositos esenciales Ocultar la complejidad de la interfaz con las diferentes tarjetas graficas presentando al programador una API unica y uniforme Ocultar las diferentes capacidades de las diversas plataformas hardware requiriendo que todas las implementaciones soporten la funcionalidad completa de OpenGL utilizando emulacion software si fuese necesario El funcionamiento basico de OpenGL consiste en aceptar primitivas tales como puntos lineas y poligonos y convertirlas en pixeles Este proceso es realizado por una pipeline grafica conocida como Maquina de estados de OpenGL 8 La mayor parte de los comandos de OpenGL bien emiten primitivas a la pipeline grafica o bien configuran como la pipeline procesa dichas primitivas Hasta la aparicion de la version 2 0 cada etapa de la pipeline ejecutaba una funcion prefijada resultando poco configurable A partir de la version 2 0 algunas etapas son programables usando un lenguaje de programacion llamado GLSL OpenGL es una API basada en procedimientos de bajo nivel que requiere que el programador dicte los pasos exactos necesarios para renderizar una escena Esto contrasta con las API descriptivas donde un programador solo debe describir la escena y puede dejar que la biblioteca controle los detalles para representarla El diseno de bajo nivel de OpenGL requiere que los programadores conozcan en profundidad la pipeline grafica a cambio de darles libertad para implementar algoritmos graficos novedosos OpenGL ha influido en el desarrollo de las tarjetas graficas promocionando un nivel basico de funcionalidad que actualmente es comun en el hardware comercial algunas de esas contribuciones son Primitivas basicas de puntos lineas y poligonos rasterizados Proceso en la pipeline de graficos Una pipeline de transformacion e iluminacion Z buffering Mapeado de texturas Alpha blending Una descripcion somera del proceso en la pipeline grafica podria ser 9 Evaluacion si procede de las funciones polinomiales que definen ciertas entradas como las superficies NURBS aproximando curvas y la geometria de la superficie Operaciones por vertices transformandolos iluminandolos segun su material y recortando partes no visibles de la escena para producir un volumen de vision Rasterizacion o conversion de la informacion previa en pixeles Los poligonos son representados con el color adecuado mediante algoritmos de interpolacion Operaciones por fragmentos o segmentos como actualizaciones segun valores venideros o ya almacenados de profundidad y de combinaciones de colores entre otros Por ultimo los fragmentos son volcados en el Frame buffer Muchas tarjetas graficas actuales proporcionan una funcionalidad superior a la basica aqui expuesta pero las nuevas caracteristicas generalmente son mejoras de esta pipeline basica mas que cambios revolucionarios de ella Ejemplo EditarNota Cuidado este ejemplo es unicamente valido con OpenGL 2 1 y versiones anteriores Hace uso intensivo de funciones actualmente anticuadas Primero limpiamos el buffer de color para empezar en un canvas negro glClear GL COLOR BUFFER BIT Se establece la matriz modelview que controla la posicion de la camara respecto a las primitivas que renderizamos La retrasamos 3 unidades en el eje Z dejandola apuntando hacia el origen glMatrixMode GL MODELVIEW Los comandos para matriz modificaran modelview glLoadIdentity Inicializar modelview glTranslatef 0 0 3 Desplazar 3 unidades en el eje Z La matriz projection controla la perspectiva aplicada a las primitivas se utiliza de forma similar a la anterior glMatrixMode GL PROJECTION Los comandos para matriz modificaran projection glLoadIdentity Inicializar projection glFrustum 1 1 1 1 1 1000 Aplicar una proyeccion en perspectiva Por ultimo se dibuja un poligono un cuadrado verde orientado en el plano XY glBegin GL POLYGON Inicio de poligono glColor3f 0 1 0 Establecer color actual a verde glVertex3f 1 1 0 Establecer un vertice glVertex3f 1 1 0 Establecer un vertice glVertex3f 1 1 0 Establecer un vertice glVertex3f 1 1 0 Establecer un vertice glEnd Fin de poligono Historia EditarEn los anos 1980 el desarrollo de software que fuese compatible con un amplio rango de hardware grafico era un verdadero reto para los desarrolladores Habia que tratar con interfaces muy diferentes y escribir drivers especificos para cada tipo de hardware resultando muy costoso por ello se subcontrataban equipos de programadores para agilizar el desarrollo Dado que cada equipo trabajaba por separado en sus interfaces se producia mucho codigo redundante Ademas era un proceso caro por lo que varios grupos innovadores aceptaron el reto de encontrar un metodo mejor Al principio de los anos 1990 SGI era un grupo de referencia en graficos 3D para estaciones de trabajo Suya era la API IRIS GL 10 considerada puntera en el campo y estandar de facto llegando a eclipsar a PHIGS basada en estandares abiertos IRIS GL se consideraba mas facil de usar y lo mas importante soportaba renderizado en modo inmediato Ademas PHIGS aparte de su mayor dificultad fue considerada inferior a IRIS GL respecto a funcionalidad y capacidad La competencia de SGI Sun Microsystems Hewlett Packard e IBM entre otros fue capaz de introducir en el mercado hardware 3D compatible con el estandar PHIGS mediante extensiones Esto fue reduciendo la cuota de mercado de SGI conforme iban entrando diferentes proveedores en el mercado Por todo ello en un intento de fortalecer su influencia en el mercado SGI decidio convertir el estandar IRIS GL en un estandar abierto SGI observo que la API IRIS GL no podia ser abierta debido a conflictos de licencias y patentes tambien contenia funciones no relevantes para los graficos 3D como API para ventanas teclado o raton en parte porque fue desarrollada antes de la aparicion del X Window System o de los sistemas NeWS de Sun Ademas mientras iba madurando el soporte del mercado para el nuevo estandar se pretendia mantener los antiguos clientes mediante bibliotecas anadidas como Iris Inventor o Iris Performer El resultado de todo lo anterior fue el lanzamiento del estandar OpenGL Algunos de los logros que se consiguieron fueron Estandarizar el acceso al hardware Trasladar a los fabricantes la responsabilidad del desarrollo de las interfaces con el hardware Delegar las funciones para ventanas al sistema operativo Con la variedad de hardware grafico existente lograr que todos hablasen el mismo lenguaje obtuvo un efecto importante ofreciendo a los desarrolladores de software una plataforma de alto nivel sobre la que trabajar En 1992 11 SGI lidero la creacion del OpenGL Architecture Review Board OpenGL ARB grupo de empresas que mantendria y extenderia la especificacion OpenGL en los anos siguientes OpenGL evoluciono desde IRIS GL superando su problema de dependencia del hardware al ofrecer emulacion software para aquellas caracteristicas no soportadas por el hardware del que se dispusiese Asi las aplicaciones podian utilizar graficos avanzados en sistemas relativamente poco potentes En 1994 SGI barajo la posibilidad de lanzar un producto denominado OpenGL el cual incluia elementos como una API de scene graph basada presumiblemente en la tecnologia de Performer Dicha especificacion fue divulgada entre unos pocos grupos interesados pero nunca aparecio finalmente como producto 12 En 1995 Microsoft lanzo Direct3D que se convertiria en el principal competidor de OpenGL El 17 de diciembre de 1997 13 Microsoft y SGI iniciaron el proyecto Fahrenheit esfuerzo cooperativo con el objetivo de unificar las interfaces de OpenGL y Direct3D y anadir tambien una API scene graph En 1998 se uniria al proyecto Hewlett Packard 14 Pese a tener un principio prometedor en estandarizar las API de graficos 3D debido a restricciones financieras en SGI y la falta general de apoyo por parte de la industria fue finalmente abandonado en 1999 15 En la GDC de 2015 Khronos Group anuncio la API sucesora de OpenGL llamada Vulkan 16 17 18 Inicialmente fue presentada por Khronos como la iniciativa OpenGL de proxima generacion pero luego el nombre fue descartado quedando Vulkan como definitivo 19 Vulkan esta basado en Mantle otra API de la empresa AMD cuyo codigo fue cedido a Khronos con la intencion de generar un estandar abierto similar a OpenGL pero de bajo nivel 16 20 21 22 23 24 Versiones Editar El texto que sigue es una traduccion defectuosa Si quieres colaborar con Wikipedia busca el articulo original y mejora esta traduccion Copia y pega el siguiente codigo en la pagina de discusion del autor de este articulo subst Aviso mal traducido OpenGL OpenGL 1 0 Editar Publicada en enero de 1992 La primera especificacion de OpenGL fue publicada por Mark Segal y Kurt Akeley OpenGL 1 1 Editar Publicada en enero de 1997 OpenGL 1 1 se enfoco en el soporte de texturas y formatos de textura sobre hardware de GPU Tarjetas graficas soportadas todas Extension Id de extension FuncionesVertex Arrays EXT vertex array glVertexPointer glColorPointer glNormalPointerPolygon Offsets depth biasing EXT polygon offset glPolygonOffsetRGBA logical blending EXT blend logic op glBlendFuncTexture Copy and Sub copy EXT subtexture EXT copy texture glTexSubImage1D 2D 3DTexture Formats EXT texture RGB LUMINANCE ALPHA INTENSITY in glTexImage2D Texture Objects EXT texture object glGenTextures glBindTexturesOpenGL 1 2 Editar Publicada el 16 de marzo de 1998 OpenGL 1 2 se enfoco en el soporte de texturas de volumen pixeles empaquetados reescalado normal muestreo de texturas clamped edge y procesamiento de imagenes Tarjetas graficas soportadas Rage 128 Rage 128 GL Rage XL XC Rage 128 Pro Rage Fury MAXX y todas las tarjetas posteriores Extension Id de extension Funciones3D Volume Textures GL EXT texture3D glTexImage3DEXTBGRA Texture Format GL EXT bgra BGR EXT BGRA EXT in glTexImage2D Packed Pixels GL EXT packed pixelsNormal Rescaling GL EXT rescale normalSeparate Specular Color GL EXT separate specular colorTexture Coord Edge Clamping SGIS texture edge clampTexture LOD Control SGIS texture lodDraw Range Elements EXT draw range elements glDrawRangeElementsImage Processing Subset EXT color table EXT convolution SGI color matrix EXT histogram EXT blend color EXT blend minmaxOpenGL 1 2 1 Editar Publicada el 14 de octubre de 1998 OpenGL 1 2 1 fue un lanzamiento menor publicado despues de OpenGL 1 2 16 de marzo de 1998 el cual anadio multi textura o unidades de textura al canal de renderizado Esto permitio texturas multiples que son combinadas por pixel durante la rasterizacion Tarjetas graficas soportadas Radeon Radeon Mobility Radeon 7500 Mobility Radeon 8500 Radeon 9000 Radeon 9200 Radeon 9600 Radeon 9800 GeForce 3 GeForce 4Ti GeForce FX y todas las tarjetas posteriores Extension Id de extension FuncionesMulti Texturing SGIS multitexture glActiveTextureARB glClientActiveTextureARBOpenGL 1 3 Editar Publicada el 14 de agosto de 2001 OpenGL 1 3 anadio soporte para textura cubemap multiples texturas multi muestreo y operaciones de combinacion de unidades de textura anadir combinar dot3 border clamp Tarjetas graficas soportadas Radeon 32 36 Radeon 64 7200 Radeon 7000 Radeo AIW Radeon 7500 Radeon IGP 320M Radeon IGP 345M ES1000 Radeon 8500 Radeon 9000 Pro Radeon 9100 9200 9250 Pro amp IGP GeForce 3 GeForce 4Ti GeForce FX y todas las tarjetas posteriores Extension Id de extension FuncionesCompressed Textures GL ARB texture compressionCubemaps GL EXT texture cube map TEXTURE CUBE MAP EXTMulti Sampling GL ARB multisampleTexture Add GL ARB texture env addTexture Combine GL ARB texture env combineTexture Dot3 GL ARB texture env dot3Texture Border Clamping GL ARB texture border clampMatrix Transpose GL ARB transpose matrixOpenGL 1 4 Editar Publicada el 24 de julio de 2002 OpenGL 1 4 anadio soporte de sombreado por hardware coordenadas niebla generacion automatica de mipmaps y modos de textura adicionales Tarjetas graficas soportadas Quadro DCC Quadro4 380 XGL Quadro4 500XGL 550XGL Quadro4 700XGL 750XGL 900XGL 980XGL y todas las tarjetas posteriores Extension Id de extension FuncionesAutomatic Mipmaps SGIS generate mipmapBlend Squaring Functions GL NV blend squareDepth Textures GL ARB depth texture DEPTH COMPONENT16 24 32 ARBHardware Shadowing Z depth GL ARB shadow COMPARE R TO TEXTUREFog Coordinates GL EXT fog coordMultiple Draw Arrays GL EXT multi draw arraysPoint Parameters GL ARB point parameterSecondary Color GL EXT secondary colorSeparate Blend Functions GL EXT blend func separateStencil Wrapping GL EXT stencil wrapTexture Crossbar Environment Mode GL ARB texture env crossbarTexture LOD Bias GL EXT texture lod biasTexture Mirrored Repeat GL ARB texture mirrored repeatWindow Raster Position GL ARB window posOpenGL 1 5 Editar Publicada el 29 de julio de 2003 OpenGL 1 5 anadio soporte para objetos de bufer de vertice VBOs consultas de oclusion y amplio las funciones de sombreado Tarjetas graficas soportadas Radeon X800 Radeon 9600 Radeon 9700 Radeon 9800 GeForce FX y todas las tarjetas posteriores Extension Id de extension Funciones Mas InformacionVBOs Vertex Buffer Objects GL ARB vertex buffer object glBindBufferARB glBufferDataARB glGenBuffersARB songhoOcclusion Queries GL ARB occlusion queryExtended Shadow Functions GL EXT shadow funcsOpenGL 2 0 Editar Publicada el 7 de septiembre de 2004 OpenGL 2 0 anadio soporte para un lenguaje ensamblador basado en GPU verdadero llamado ARB disenado por el Architecture Review Board que se convertiria en el estandar para vertex y fragment shaders Las tarjetas publicadas con OpenGL 2 0 fueron las primeras en ofrecer shaders programables por el usuario Tarjetas soportadas Radeon 9650 Radeon 9500 Radeon 9500 9550 9600 9700 9800 Pro SE XT Radeon X1050 Radeon Xpress 200 1100 Radeon X300 Radeon X550 Radeon X600 Pro Radeon X700 Radeon X800 VE SE GT Pro Radeon X850 Radeon Xpress 1250 Radeon X1200 Radeon X1250 Radeon 2100 Radeon X1300 X1550 X1600 X1650 X1800 X1900 X1950 Pro XT GT GeForce 6800 Quadro 600 Quadro FX 500 Quadro FX 700 Quadro FX 1000 FX 2000 FX 3000 Quadro FX 1400 Quadro FX 1500 Quadro FX 3450 Quadro FX 3500 Quadro FX 4500X2 Quadro FX4500 SDI y todas las tarjetas posteriores OpenGL 2 0 fue concebido por 3Dlabs para abordar las preocupaciones de que OpenGL estaba estancado y carecia de una direccion fuerte 3Dlabs propuso una serie de importantes adiciones a la norma La mayoria de estas fueron en ese momento rechazadas por el ARB o de otra manera nunca llegaron a realizarse en la forma que 3Dlabs propuso Sin embargo su propuesta de un lenguaje de sombreado de estilo C se completo con el tiempo resultando en la formulacion actual del GLSL OpenGL Shading Language tambien slang Al igual que los lenguajes de sombreado estilo ensamblador que trataba de sustituir permite al programador sustituir los fixed function vertex y el fragment pipe con shaders aunque esta vez escritos en un lenguaje tipo C de alto nivel El diseno de GLSL se destaco por hacer relativamente pocas concesiones a las limitaciones del hardware entonces disponible lo que recordaba a la tradicion anterior de OpenGL estableciendo un objetivo ambicioso con vision de futuro para los aceleradores 3D en lugar de simplemente seguir el estado de hardware disponible actualmente La ultima especificacion OpenGL 2 0 25 incluye soporte para GLSL Extension ID de extension FuncionesShader Objects GL ARB shader objectsVertex Programs GL ARB vertex program glBindProgramARB glGenProgramsARBVertex Shaders VS GL ARB vertex shaderFragment Shaders FS GL ARB fragment shaderMultiple Render Targets GL ARB draw buffers glDrawBuffersRectangular Texture GL ARB texture rectangle GL TEXTURE RECTANGLE ARBPoint Sprites GL ARB point spriteSeparate Blend Equation GL EXT blend equation separateSeparate Stencil GL EXT stencil two sideOpenGL 2 1 Editar El 2 de agosto de 2006 se publico OpenGL 2 1 Siendo completamente compatible con las versiones anteriores 26 aporta ademas nuevas caracteristicas como Revision 1 20 del OpenGL Shading Language GLSL Comandos que soportan la especificacion de matrices no cuadradas Objetos Pixel buffer para acelerar el trafico de imagenes en los buffers en comandos como glTexImage2D y glReadPixels Esta funcionalidad corresponde a la extension ARB pixel buffer object Texturas sRGB Esta funcionalidad corresponde a la extension GL EXT texture sRGB OpenGL 3 0 Editar La version OpenGL 3 0 27 fue publicada el 11 de agosto de 2008 Tarjetas compatibles GeForce 8 Series ATI HD Radeon 2000 Series Es decir solo el hardware compatible con Direct3D 10 0 es capaz de ejecutar OpenGL 3 0 Es compatible hacia atras con todas las versiones anteriores de OpenGL aunque introduce un nuevo mecanismo para despreciar deprecateen ingles funcionalidad obsoleta y asi poder simplificar la API en versiones futuras Las principales novedades son OpenGL Shading Language version 1 30 GLSL Vertex Array Objects Framebuffer Objects mas flexibles Texturas y render buffers en coma flotante de 32 bits Soporte para formato en coma flotante de 16 bits para vertices y pixeles Capacidad de almacenar vertices en un buffer tras haber sido transformados Texture arrays Z buffer en coma flotante de 32 bits OpenGL 3 1 Editar La version 3 1 Longs Peak Reloaded fue publicada el 24 de marzo de 2009 y presenta una serie de caracteristicas para hacer la API mas conveniente de utilizar ademas de las caracteristicas orientadas al rendimiento Lenguaje de Sombreado OpenGL revision 1 40 GLSL Texture Buffer Objects un tipo de nueva textura que contiene una matriz unidimensional de texels Uniform Buffer Objects para compartir o actualizar datos de forma rapida Texturas normalizadas firmadas rango 1 0 Un minimo de 16 unidades de textura accesibles por el Vertex Shader Reinicio de primitiva Instancias dibujo de objetos en multiples ocasiones a traves de la reutilizacion de los vertex data CopyBuffer API para copia rapida de datos utilizada en conjunto con OpenCLCon la liberacion de la especificacion OpenGL 3 1 tambien fue publicada una extension de compatibilidad que permite a los desarrolladores acceder a la funcionalidad de OpenGL 1 X 2 X eliminada en OpenGL 3 1 En particular se mantiene funcionalidad legacy para una amplia linea de soporte Funcionalidad heredada eliminada incluye Todas las opciones de funcion fija Modo directo Color index mode por ejemplo formatos de pixel con paletas de coloresOpenGL 3 2 Editar La version 3 2 fue publicada el 3 de agosto de 2009 Incluye las siguientes caracteristicas OpenGL Shading Language version 1 50 GLSL Soporte de Geometria Shader BGRA vertice componente de pedidos Fragmento Shader coordinar el control de convencion Perfecta mapa cubo filtrado Fragmento de profundidad de sujecion Multisampled texturas y textura de las muestras para lugares especificos de la muestra Objetos de sincronizacion y cercaOpenGL 3 3 Editar Publicada el 11 de marzo de 2010OpenGL 3 3 simultaneamente lanzado con OpenGL 4 0 y complementada por un conjunto de nuevas extensiones ARB porta tanta funcionalidad como es posible desde la especificacion OpenGL 4 0 para su uso en la generacion anterior de hardware GPU Incluye GLSL 3 30 OpenGL 4 0 Editar Publicada el 11 de marzo de 2010 Tarjetas compatibles Radeon HD serie 5000 nVidia GTX serie 400 Caracteristicas 28 OpenGL Shading Language version 4 00 GLSL Dos fases de sombreado que permiten a la GPU descargar el teselado geometrico de la CPU Per shaders fragmento de la muestra y de sombreado programable posiciones fragmento de entrada para mayor calidad de representacion y anti aliasing de flexibilidad Subrutinas Shader para una flexibilidad de programacion aumentada significativamente Separacion del estado de textura y de los datos de textura mediante la adicion de un nuevo tipo de objeto llamado sampler objetos Dibujo de los datos generados por el API de OpenGL o API externos tales como OpenCL sin intervencion de la CPU Operaciones de 64 bit de coma flotante de doble precision de sombreado y entradas salidas para prestar mayor precision y calidad Mejoras de rendimiento tales como shaders de geometria en instancias instancias matrices y una consulta de nuevo temporizador OpenGL 4 1 Editar Anunciado el 26 de julio de 2010 29 Tarjetas soportadas Nvidia GeForce 400 series Nvidia GeForce 500 series ATI Radeon HD 5000 series AMD Radeon HD 6000 SeriesEsta nueva version anade estas caracteristicas adicionales a la especificacion muchas de las cuales ayudan a ponerla en consonancia con las de Direct3D 11 Lenguaje de sombreado OpenGL GLSL 4 1 Compatibilidad completa con OpenGL para sistemas integrados OpenGL ES 2 0 Reduccion de tiempos de recompilacion La capacidad de vincular los programas de forma individual a las cinco etapas programables Vertex Control de mosaico Evaluacion del Teselado la Geometria y Fragmento Mejoras a la coma flotante general de 64 bits compatible con agregado en OpenGL 4 0OpenGL 4 2 Editar Publicado el 8 de agosto de 2011 30 Tarjetas soportadas Nvidia GeForce 400 series Nvidia GeForce 500 series ATI Radeon HD 5000 series AMD Radeon HD 6000 Series ATI Radeon HD 7000 series Soporte para shaders con contadores atomicos y load store atomic read modify write operations en un unico nivel de una textura Capacidad de capturar geometria de la GPU en mosaico y dibujar varias instancias de una transform feedback para que los objetos complejos sean facilmente replicados o cambiados de posicion OpenGL puede modificar ahora un subconjunto arbitrario de una textura comprimida sin necesidad de volver a descargar toda la textura a la GPU llevando esto a un mayor rendimiento Soporte para empaquetar varios valores de 8 bits y 16 bits en un unico valor de 32 bits llevando a un procesamiento mas eficiente del shader y presion reducida en la memoria y el ancho de banda OpenGL 4 3 Editar Publicado el 6 de agosto de 2012 31 Tarjetas Soportadas Nvidia GeForce 400 series Nvidia GeForce 500 series Nvidia GeForce 600 series ATI Radeon HD 8000 series Incluye la version mas actualizada de GLSL en su version 4 30 OpenGL Shading Language Calculo de shaders que aprovechan el paralelismo de la GPU para todo lo relacionado con geometria o graficos Almacenamiento en bufer de objetos Shader Consultas de parametros de texturas para hallar los limites que las plataformas pueden tener para procesar las mismas Alta calidad de comprension en texturas ETC2 EAC como caracteristica estandar Compatibilidad total con las API de OpenGL ES 3 0 Capacidades de depuracion que permiten recibir mensajes de depuracion mientras se desarrolla la aplicacion Vistas de texturas para analisis de las mismas en diferentes formas sin replicacion de datos Incrementa la seguridad de la memoria Una extension multi aplicacion que anade robustez al sistema e impide que las aplicaciones que provoquen un fallo y tengan que resetearse afecten a otras que esten en ejecucion OpenGL 4 4 Editar Publicado el 22 de julio de 2013 32 Buffer Placement Control Efficient Asynchronous Queries Shader Variable Layout Efficient Multiple Object Binding Streamlined Porting of Direct3D applications Bindless Texture Extension Sparse Texture ExtensionOpenGL 4 5 Editar Publicado el 11 de agosto de 2014 33 34 Tarjetas Soportadas Nvidia GeForce 400 series y nuevas tambien Tegra K1 y Tegra X1 35 36 Direct State Access DSA 37 Flush Control Mejorado el sistema de multiproceso Robustness Mejoras en el WebGL OpenGL ES 3 1 API y compatibilidad de shaders Documentacion EditarLa popularidad de OpenGL se debe en parte a su detallada documentacion oficial El OpenGL ARB ha publicado una serie de manuales actualizados conforme la API iba evolucionando Son facilmente reconocibles y conocidos por el color de sus tapas El Libro Rojo The Red Book The OpenGL Programmer s guide ISBN 0 321 33573 2Libro de referencia y tutorial Considerado libro de cabecera para programadores de OpenGL El Libro Azul The Blue Book The OpenGL Referencia manual ISBN 0 321 17383 XEn esencia una copia de la paginas del man de OpenGL Incluye un poster desplegable con el diagrama de la estructura de una implementacion ideal de OpenGL El Libro Verde The Green Book Programming OpenGL for the X Window System ISBN 0 201 48359 9Libro sobre la interfaz X11 y GLUT El Libro Alpha de tapa blanca The Alpha Book OpenGL Programming for Windows 95 and Windows NT ISBN 0 201 40709 4Libro sobre la interfaz de OpenGL en plataformas de Microsoft Windows Para OpenGL 2 0 y posteriores El Libro Naranja The Orange Book The OpenGL Shading Language ISBN 0 321 33489 2Libro de referencia y tutorial para GLSL Extensiones EditarEl estandar OpenGL permite a los fabricantes anadir nuevas funcionalidades adicionales mediante extensiones conforme aparecen nuevas tecnologias Dichas extensiones pueden introducir nuevas funciones y constantes y suavizar o incluso eliminar restricciones en funciones ya existentes Cada fabricante dispone de una abreviatura que le identifica en el nombre de sus nuevas funciones o constantes Por ejemplo la abreviatura de NVIDIA NV aparece en la definicion de su funcion glCombinerParameterfvNV y su constante GL NORMAL MAP NV Es posible que varios fabricantes se pongan de acuerdo en implementar la misma funcionalidad extendida En ese caso se usa la abreviatura EXT Incluso puede ocurrir que el ARB adopte la extension convirtiendose asi en estandar y utilizando la abreviatura ARB en sus nombres La primera extension ARB fue GL ARB multitexture presentada en la version 1 2 1 Siguiendo el camino marcado por la extension el multitexturing no es ya una extension opcional sino que entro a formar parte del nucleo de OpenGL desde la version 1 3 Antes de usar una extension los programas deben comprobar su disponibilidad y despues acceder a las nuevas funcionalidades ofrecidas Este proceso es dependiente de la plataforma pero bibliotecas como GLEW y GLEE lo simplifican Las especificaciones para la mayor parte de las extensiones pueden encontrarse en el registro oficial de extensiones 38 Bibliotecas de utilidades EditarSe han programado varias bibliotecas externas que anaden caracteristicas no disponibles en el propio OpenGL Algunas de ellas son GLU Ofrece funciones de dibujo de alto nivel basadas en primitivas de OpenGL Las funciones de GLU se reconocen facilmente pues todas empiezan con el prefijo glu GLUT API multiplataforma que facilita una rudimentaria funcionalidad para el manejo de ventanas e interaccion por medio de teclado y raton GLUI Interfaz de usuario basada en GLUT proporciona elementos de control tales como botones cajas de seleccion y spinners Es independiente del sistema operativo sustentandose en GLUT para manejar los elementos dependientes del sistema Referencias para lenguajes de programacion bindings EditarPara enfatizar las caracteristicas multilenguaje y multiplataforma de OpenGL se han desarrollado varios bindings en muchos lenguajes Algunos de los lenguajes para los que estan disponibles dichos bindings son Ada Ada OpenGL 1 1 39 soporta GL GLU y GLUT C Tao 40 es un framework para NET que incluye OpenGL entre otras bibliotecas multimedia D vease 41 y 42 Embarcadero Delphi Dot 43 Fortran f90gl 44 soporta OpenGL 1 2 GLU 1 2 GLUT 3 7 Gambas gb opengl 45 Genie Lazarus FreePascal LCL GLUT 46 Java JOGL 47 y LWJGL 48 entre otros vease 49 Lisp vease 50 Perl vease 49 Pike tiene una interfaz nativa a OpenGL 51 Ademas soporta GLU y GLUT Python PyOpenGL 52 soporta GL GLU y GLUT Visual Basic vease 49 XBase vease 53 Haskell HOpenGL 54 soporta GL GLU y GLUT ValaMiembros del Grupo Khronos EditarEn 2008 algunos de los miembros del Grupo Khronos son AMD Apple Blizzard Intel Graphics Controllers nVIDIAPara una lista completa y actualizada de los miembros del proyecto veanse las listas de miembros 55 contribuyentes 56 y academicos 57 del Grupo Khronos 58 Vease tambien EditarGLSL Lenguaje de alto nivel de shaders para OpenGL JOGL Java OpenGL Biblioteca para usar OpenGL en Java OpenGL ES Biblioteca para sistemas integrados WebGL Especificacion estandar para desplegar graficos en 3D en navegadores web OpenWF Interfaz de abstraccion de bajo nivel de hardware para sistemas de ventana compuesto OpenSL ES API multiplataforma para audio 2D y 3D acelerada por hardware OpenML Ambiente de programacion multiplataforma para capturar transportar procesar desplegar y sincronizar medios digitales OpenKODE API nativos para los juegos en dispositivos de mano y las aplicaciones de medios Comparacion entre Direct3D y OpenGLBibliotecas adicionales para OpenGL Editar GLU Funciones adicionales NURBS esferas discos etc GLUT API para facilitar desarrollo con OpenGL y gestionar ventanas y eventos GLUI Biblioteca de interfaz basada en GLUT GLX Interfaz de OpenGL con el sistema X Window SystemOtras interfaces de graficos Editar Vulkan Sucesor de OpenGL Mesa 3D Implementacion de codigo abierto de OpenGL LWJGL Lightweight Java Game Library Acceso a OpenGL OpenAL y varios dispositivos de entrada VirtualGL Comandos 3D entre servidor dedicado y clienteAplicaciones OpenGL Editar Anexo Lista de Aplicaciones que usan OpenGLReferencias Editar https www opengl org documentation current version SGI OpenGL Overview Boletin de prensa de Khronos anunciando la fusion con ARB Archivado desde el original el 3 de mayo de 2008 Analisis de la fusion de Khronos y ARB Archivado desde el original el 20 de mayo de 2008 Consultado el 14 de enero de 2007 OpenGL Architecture Review Board Working Group OpenGL Architecture Review Board Working Group Especificacion de OpenGL version 3 0 http www opengl org documentation specs version1 1 state pdf Especificacion del Sistema Grafico OpenGL Version 2 1 Iris GL propiedad de SGI Archivado desde el original el 29 de septiembre de 2007 Consultado el 16 de febrero de 2007 Creacion del OpenGL ARB Fin de OpenGL Anuncio publico de Fahrenheit Archivado desde el original el 27 de septiembre de 2007 Miembros del Proyecto Fahrenheit 1998 Archivado desde el original el 15 de enero de 2008 Consultado el 15 de enero de 2007 Fin del Proyecto Fahrenheit a b More on Vulkan and SPIR V The future of high performance graphics Khronos Group p 10 Consultado el 27 de junio de 2015 Thanks AMD Vulkan Graphics and compute Belong Together PDF Khronos org March 2015 Consultado el 5 de marzo de 2015 Vulkan Graphics and compute belong together Khronos org Consultado el 5 de marzo de 2015 Batchelor James glNext revealed as Vulkan graphics API develop online net Mah Ung Gordon Mantle is a Vulkan AMD s dead graphics API rises from the ashes in OpenGL s successor PCWorld AMD Gaming One of Mantle s Futures Vulkan AMD Blogs Community amd com Archivado desde el original el 6 de marzo de 2015 Consultado el 5 de marzo de 2015 Hruska Joel Not dead yet AMD s Mantle powers new Vulkan API VR efforts ExtremeTech Consultado el 5 de marzo de 2015 AMD s Mantle Lives On In Vulkan Lays The Foundation For The Next OpenGL Wccftech com 20 de junio de 2014 Consultado el 5 de marzo de 2015 Kirsch Nathan Is AMD Mantle Dead As We Have Known It Vulcan API Uses Mantle Technology for OpenGL Legit Reviews Consultado el 5 de marzo de 2015 http www opengl org documentation specs version2 0 glspec20 pdf Caracteristicas de OpenGL 2 1 http www opengl org registry doc glspec30 20080811 pdf Khronos webmaster 11 de marzo de 2010 Khronos Unleashes Cutting Edge Cross Platform Graphics Acceleration with OpenGL 4 0 Khronos Press Releases Archivado desde el original el 25 de agosto de 2011 Consultado el 11 de marzo de 2010 OpenGL 4 1 Specification Released Khronos Enriches Cross Platform 3D Graphics with Release of OpenGL 4 2 Specification Khronos Releases OpenGL 4 3 Specification with Major Enhancements Khronos Releases OpenGL 4 4 Specification Khronos Group Announces Key Advances in OpenGL Ecosystem Khronos Group Press Release Consultado el 17 de abril de 2015 Khronos Group OpenGL Registry Consultado el 17 de abril de 2015 SG4121 OpenGL Update for NVIDIA GPUs Ustream Archivado desde el original el 17 de mayo de 2015 Consultado el 17 de abril de 2015 Mark Kilgard OpenGL 4 5 Update for NVIDIA GPUs Consultado el 17 de abril de 2015 OpenGL 4 5 released with one of Direct3D s best features Ars Technica Consultado el 17 de abril de 2015 Registry redirect Archivado desde el original el 15 de enero de 2007 Consultado el 2009 Index of bond OPENGL ADA Archivado desde el original el 13 de octubre de 2004 Consultado el 2009 News The Tao Framework Archivado desde el original el 7 de junio de 2008 Consultado el 2009 bindings dsource org Consultado el 2009 derelict dsource org Consultado el 2009 Nikita is no more Elena is here Archivado desde el original el 19 de abril de 2012 Consultado el 2009 f90gl Fortran interface for OpenGL and GLUT Consultado el 2009 Documentacion de Gambas gb opengl Archivado desde el original el 12 de marzo de 2012 Consultado el 2009 Lazarus OpenGL Tutorial Archivado desde el original el 11 de octubre de 2017 Consultado el 2011 jogl Archivado desde el original el 21 de agosto de 2009 Consultado el 2009 lwjgl org Home of the Lightweight Java Game Library Consultado el 2009 a b c Programming Language Bindings Consultado el 2009 Welcome to OpenGL for MCL Consultado el 2009 pike ida liu se Modules Archivado desde el original el 2 de octubre de 2012 Consultado el 2009 PyOpenGL The Python OpenGL Binding Consultado el 2009 Contenido del Paquete Academico Archivado desde el original el 4 de marzo de 2016 Consultado el 2009 https web archive org web 20071012184537 http haskell org HOpenGL index html Khronos Promoting Members Consultado el 2009 Khronos Contributing Members Consultado el 2009 Khronos Academic Members Consultado el 2009 The Khronos Group Open Standards Royalty Free Dynamic Media Technologies Consultado el 2009 Enlaces externos EditarSitio web oficial de realtech vr Visor de Extensiones OpenGL y Visor de Extensiones DirectX Sitio web oficial de OpenGL Archivado el 26 de febrero de 2011 en Wayback Machine Sitio web de SGI sobre OpenGL OpenGL en el Open Directory Project Grupo Khronos NeHe Tutorials tutoriales para el aprendizaje de OpenGL Proyecto Fahrenheit en Microsoft Black Byte Tutoriales en Espanol de OpenGL Why do game developers prefer Windows post sobre OpenGL vs DirectX Datos Q178570 Multimedia OpenGL Obtenido de https es wikipedia org w index php title OpenGL amp oldid 139266486, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos