Está en la página 1de 10

OpenGL

OpenGL (Open Graphics Library) es una especicacin estndar que dene una API multilenguaje y
multiplataforma para escribir aplicaciones que produzcan grcos 2D y 3D. La interfaz consiste en ms de 250
funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas
geomtricas simples, tales como puntos, lneas y tringulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 1992[2] y se usa ampliamente en CAD,
realidad virtual, representacin cientca, visualizacin
de informacin y simulacin de vuelo. Tambin se usa en
desarrollo de videojuegos, donde compite con Direct3D
en plataformas Microsoft Windows.

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 especicacin de OpenGL se denomina OpenGL ARB Working Group.[6] Para una relacin de los miembros que componen el OpenGL ARB
Working Group, vase el apartado Miembros del Grupo
Khronos. El gran nmero 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
propsito general con un amplio rango de posibilidades.
Mark Segal y Kurt Akeley fueron los autores de la especicacin original de OpenGL. Chris Frazier fue el editor
de la versin 1.1. Jon Leech ha editado las versiones desde 1.2 hasta la presente 3.0.[7]

Especicacin

Fundamentalmente OpenGL es una especicacin, es decir, un documento que describe un conjunto de funciones 2 Diseo
y el comportamiento exacto que deben tener. Partiendo
de ella, los fabricantes de hardware crean implementa- OpenGL tiene dos propsitos esenciales:
ciones, que son bibliotecas de funciones que se ajustan
a los requisitos de la especicacin, utilizando acelera Ocultar la complejidad de la interfaz con las difecin hardware cuando es posible. Dichas implementaciorentes tarjetas grcas, presentando al programador
nes deben superar unos tests de conformidad para que
una API nica y uniforme.
sus fabricantes puedan calicar su implementacin como
conforme a OpenGL y para poder usar el logotipo ocial
Ocultar las diferentes capacidades de las diversas
de OpenGL.
plataformas hardware, requiriendo que todas las implementaciones soporten la funcionalidad completa
Hay implementaciones ecientes de OpenGL para Mac
de OpenGL (utilizando emulacin software si fuese
OS, Microsoft Windows, GNU/Linux, varias platafornecesario).
mas Unix y PlayStation 3. Existen tambin varias implementaciones en software que permiten ejecutar aplicaciones que dependen de OpenGL sin soporte de acele- El funcionamiento bsico de OpenGL consiste en acepracin hardware. Es destacable la biblioteca de software
tar primitivas tales como puntos, lneas y polgonos, y
libre / cdigo abierto Mesa 3D, una API de grcos sin convertirlas en pxeles. Este proceso es realizado por una
aceleracin hardware y completamente compatible con pipeline grca conocida como Mquina de estados de
OpenGL. Sin embargo, para evitar los costes de la li- OpenGL.[8] La mayor parte de los comandos de OpenGL
cencia requerida para ser denominada formalmente como bien emiten primitivas a la pipeline grca o bien conuna implementacin de OpenGL, arma ser simplemente guran cmo la pipeline procesa dichas primitivas. Hasta
una API muy similar.
la aparicin de la versin 2.0 cada etapa de la pipeline
La especicacin 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 creacin de una API consistente y ampliamente disponible. Microsoft, uno de los miembros fundadores, abandon el proyecto en 2003.

ejecutaba una funcin prejada, resultando poco congurable. A partir de la versin 2.0 algunas etapas son programables usando un lenguaje de programacin llamado
GLSL.

OpenGL es una API basada en procedimientos de bajo nivel que requiere que el programador dicte los pasos
El 21 de septiembre de 2006 se anunci que el con- exactos necesarios para renderizar una escena. Esto control de OpenGL pasara del ARB al Grupo Khronos.[3] trasta con las APIs descriptivas, donde un programador
1

slo debe describir la escena y puede dejar que la biblioteca controle los detalles para representarla. El diseo de
bajo nivel de OpenGL requiere que los programadores
conozcan en profundidad la pipeline grca, a cambio de
darles libertad para implementar algoritmos grcos novedosos.

HISTORIA

Muchas tarjetas grcas actuales proporcionan una funcionalidad superior a la bsica aqu expuesta, pero las
nuevas caractersticas generalmente son mejoras de esta
pipeline bsica ms que cambios revolucionarios de ella.

OpenGL ha inuido en el desarrollo de las tarjetas gr- 3 Ejemplo


cas, promocionando un nivel bsico de funcionalidad que
actualmente es comn en el hardware comercial; algunas Nota: Cuidado, este ejemplo es nicamente vlido
de esas contribuciones son:
con OpenGL 2.1 y versiones anteriores. Hace uso intensivo de funciones actualmente anticuadas.
Primitivas bsicas de puntos, lneas y polgonos
Primero, limpiamos el buer de color para empezar en
rasterizados.
un canvas negro:
glClear( GL_COLOR_BUFFER_BIT );
Se establece la matriz modelview, que controla la posicin
de la cmara respecto a las primitivas que renderizamos.
La retrasamos 3 unidades en el eje Z, dejndola apuntando
hacia el origen:
glMatrixMode( GL_MODELVIEW ); /* Los comandos
para matriz modicarn ''modelview'' */ glLoadIdentity(); /* Inicializar ''modelview'' */ glTranslatef( 0, 0,
3 ); /* Desplazar 3 unidades en el eje Z */
Proceso en la pipeline de grcos.

Una pipeline de transformacin e iluminacin.


Z-buering.
Mapeado de texturas.
Alpha blending.

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 modicarn ''projection'' */ glLoadIdentity(); /* Inicializar ''projection'' */ glFrustum( 1,
1, 1, 1, 1, 1000 ); /* Aplicar una proyeccin en
perspectiva */

Una descripcin somera del proceso en la pipeline grca


Por ltimo, se dibuja un polgono (un cuadrado verde
podra ser:[9]
orientado en el plano XY):
glBegin( GL_POLYGON ); /* Inicio de polgono */
glColor3f( 0, 1, 0 ); /* Establecer color actual a verde
*/ glVertex3f( 1, 1, 0 ); /* Establecer un vrtice */
glVertex3f( 1, 1, 0 ); /* Establecer un vrtice */ glVertex3f( 1, 1, 0 ); /* Establecer un vrtice */ glVertex3f(
2. Operaciones por vrtices, transformndolos, ilumi- 1, 1, 0 ); /* Establecer un vrtice */ glEnd(); /* Fin de
nndolos segn su material y recortando partes no polgono */
visibles de la escena para producir un volumen de
visin.
1. Evaluacin, si procede, de las funciones polinomiales que denen ciertas entradas, como las supercies
NURBS, aproximando curvas y la geometra de la
supercie.

3. Rasterizacin, o conversin de la informacin previa en pxeles. Los polgonos son representados con 4 Historia
el color adecuado mediante algoritmos de interpolacin.
En los aos 1980 el desarrollo de software que fuese compatible
con un amplio rango de hardware grco era un
4. Operaciones por fragmentos o segmentos, como acverdadero
reto para los desarrolladores. Haba que tratar
tualizaciones segn valores venideros o ya almacecon
interfaces
muy diferentes y escribir drivers especnados de profundidad y de combinaciones de colocos
para
cada
tipo
de hardware, resultando muy costoso;
res, entre otros.
por ello, se subcontrataban equipos de programadores pa5. Por ltimo, los fragmentos son volcados en el Frame ra agilizar el desarrollo. Dado que cada equipo trabajaba
buer.
por separado en sus interfaces, se produca mucho cdi-

3
go redundante. Adems, era un proceso caro, por lo que mo una API de scene-graph (basada presumiblemente en
varios grupos innovadores aceptaron el reto de encontrar la tecnologa de Performer). Dicha especicacin fue diun mtodo mejor.
vulgada entre unos pocos grupos interesados, pero nunca
[12]
Al principio de los aos 1990 SGI era un grupo de re- apareci nalmente como producto.
ferencia en grcos 3D para estaciones de trabajo. Suya
era la API IRIS GL,[10] considerada puntera en el campo
y estndar de facto, llegando a eclipsar a PHIGS, basada
en estndares abiertos. IRIS GL se consideraba ms fcil de usar y, lo ms importante, soportaba renderizado
en modo inmediato. Adems, PHIGS, aparte de su mayor
dicultad, fue considerada inferior a IRIS GL respecto a
funcionalidad y capacidad.

En 1995 Microsoft lanz Direct3D, que se convertira 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 unicar las interfaces de OpenGL y Direct3D (y aadir tambin una API scene-graph). En 1998 se unira al proyecto
Hewlett-Packard.[14] Pese a tener un principio prometedor en estandarizar las APIs de grcos 3D, debido a resLa competencia de SGI (Sun Microsystems, Hewlett- tricciones nancieras en SGI y la falta general de apoyo
de la industria, fue nalmente abandonado en
Packard e IBM, entre otros) fue capaz de introducir en el por parte
[15]
1999.
mercado hardware 3D compatible con el estndar 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 5 Versiones
fortalecer su inuencia en el mercado, SGI decidi convertir el estndar IRIS GL en un estndar abierto.
SGI observ que la API IRIS GL no poda ser abierta
debido a conictos de licencias y patentes; tambin contena funciones no relevantes para los grcos 3D como
APIs para ventanas, teclado o ratn (en parte, porque fue
desarrollada antes de la aparicin del X Window System
o de los sistemas NeWS de Sun). Adems, mientras iba
madurando el soporte del mercado para el nuevo estndar, se pretenda mantener los antiguos clientes mediante
bibliotecas aadidas como Iris Inventor o Iris Performer.

5.1 OpenGL 1.0

Publicada en enero de 1992.


La primera especicacin de OpenGL fue publicada por
Mark Segal y Kurt Akeley.

5.1.1 OpenGL 1.1

Publicada en enero de 1997.


El resultado de todo lo anterior fue el lanzamiento del OpenGL 1.1 se enfoc en el soporte de texturas y formatos de textura sobre hardware de GPU.
estndar OpenGL.
Tarjetas grcas soportadas: todas
Algunos de los logros que se consiguieron fueron:
Estandarizar el acceso al hardware.

5.1.2 OpenGL 1.2

Trasladar a los fabricantes la responsabilidad del


Publicada el 16 de marzo de 1998.
desarrollo de las interfaces con el hardware.
OpenGL 1.2 se enfoc en el soporte de texturas de volu Delegar las funciones para ventanas al sistema ope- men, pxeles empaquetados, reescalado normal, muestreo
rativo.
de texturas clamped/edge y procesamiento de imgenes.
Tarjetas grcas soportadas: Rage 128, Rage 128 GL,
Con la variedad de hardware grco existente, lograr que Rage XL/XC, Rage 128 Pro, Rage Fury MAXX, y totodos hablasen el mismo lenguaje obtuvo un efecto im- das las tarjetas posteriores.
portante, ofreciendo a los desarrolladores de software una
plataforma de alto nivel sobre la que trabajar.
5.1.3 OpenGL 1.2.1
En 1992,[11] SGI lider la creacin del OpenGL Architecture Review Board (OpenGL ARB), grupo de Publicada el 14 de octubre de 1998
empresas que mantendra y extendera la especicacin OpenGL 1.2.1 fue un lanzamiento menor publicado desOpenGL en los aos siguientes. OpenGL evolucion des- pus de OpenGL 1.2 (16 de marzo de 1998) el cual aade IRIS GL, superando su problema de dependencia del di multi-textura, o unidades de textura, al canal de renhardware al ofrecer emulacin software para aquellas ca- derizado. Esto permiti texturas mltiples que son comractersticas no soportadas por el hardware del que se binadas por pxel durante la rasterizacin.
dispusiese. As, las aplicaciones podan utilizar grcos Tarjetas grcas soportadas: Radeon, Radeon Mobility,
avanzados en sistemas relativamente poco potentes.
Radeon 7500 Mobility, Radeon 8500, Radeon 9000, RaEn 1994 SGI baraj la posibilidad de lanzar un produc- deon 9200, Radeon 9600, Radeon 9800, GeForce 3, Geto denominado OpenGL++, el cual inclua elementos co- Force 4Ti, GeForce FX, y todas las tarjetas posteriores

4
5.1.4

5 VERSIONES
OpenGL 1.3

Publicada el 14 de agosto de 2001.


OpenGL 1.3 aadi soporte para textura cubemap, mltiples texturas, multi-muestreo y operaciones de combinacin de unidades de textura (aadir, combinar, dot3,
border clamp).
Tarjetas grcas 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.
5.1.5

OpenGL 1.4

OpenGL 2.0 fue concebido por 3Dlabs para abordar las


preocupaciones de que OpenGL estaba estancado y careca de una direccin fuerte. 3Dlabs propuso una serie
de importantes adiciones a la norma. La mayora 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 formulacin actual del GLSL
(OpenGL Shading Language, tambin slang).Al igual
que los lenguajes de sombreado estilo-ensamblador que
trataba de sustituir, permite al programador sustituir los
xed-function vertex y el fragment pipe con shaders, aunque esta vez escritos en un lenguaje tipo C de alto nivel.
El diseo de GLSL se destac por hacer relativamente
pocas concesiones a las limitaciones del hardware entonces disponible, lo que recordaba a la tradicin anterior
de OpenGL estableciendo un objetivo ambicioso, con visin de futuro para los aceleradores 3D en lugar de simplemente seguir el estado de hardware disponible actualmente. La ltima especicacin OpenGL 2.0[16] incluye
soporte para GLSL.

Publicada el 24 de julio de 2002.


OpenGL 1.4 aadi soporte de sombreado por hardware,
coordenadas niebla, generacin automtica de mipmaps,
y modos de textura adicionales.
Tarjetas grcas soportadas: Quadro DCC, Quadro4 380
XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL,
750XGL, 900XGL, 980XGL, y todas las tarjetas posteriores.
5.2.1 OpenGL 2.1
5.1.6

OpenGL 1.5

Publicada el 29 de julio de 2003.


OpenGL 1.5 aadi soporte para objetos de bfer de vrtice (VBOs), consultas de oclusin, y ampli las funciones
de sombreado.
Tarjetas grcas soportadas: Radeon X800, Radeon
9600, Radeon 9700, Radeon 9800, GeForce FX, y todas
las tarjetas posteriores.

5.2

OpenGL 2.0

Publicada el 7 de septiembre de 2004.


OpenGL 2.0 aadi soporte para un lenguaje ensamblador basado en GPU verdadero, llamado ARB (diseado
por el Architecture Review Board), que se convertira en
el estndar 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, Qaudro 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.

El 2 de agosto de 2006 se public OpenGL 2.1.


Siendo completamente compatible con las versiones
anteriores,[17] aporta adems nuevas caractersticas como:
Revisin 1.20 del OpenGL Shading Language
(GLSL).
Comandos que soportan la especicacin de matrices no cuadradas.
Objetos Pixel buer para acelerar el trco de imgenes en los buers en comandos como glTexImage2D y glReadPixels.
Esta funcionalidad corresponde a la extensin
ARB_pixel_buer_object.
Texturas sRGB.
Esta funcionalidad corresponde a la extensin
GL_EXT_texture_sRGB.

5.3 OpenGL 3.0


La versin OpenGL 3.0[18] fue publicada el 11 de agosto
de 2008. Es compatible hacia atrs con todas las versiones
anteriores de OpenGL, aunque introduce un nuevo mecanismo para despreciar (deprecate en ingls) funcionalidad
obsoleta y as poder simplicar la API en versiones futuras.
Las principales novedades son:

5.4

OpenGL 4.0

OpenGL Shading Language versin 1.30 (GLSL)


Vertex Array Objects.
Framebuer Objects ms exibles.
Texturas y render buers en coma otante de 32bits.
Soporte para formato en coma otante de 16-bits
para vrtices y pxeles.
Capacidad de almacenar vrtices en un buer tras
haber sido transformados.
Texture arrays
Z-buer en coma otante de 32-bits.
Slo el hardware a nivel de DirectX 10 es capaz de ejecutar OpenGL 3.0.
5.3.1

OpenGL 3.1

5
5.3.2 OpenGL 3.2
La versin 3.2 fue publicada el 3 de agosto de 2009. Incluye las siguientes caractersticas:
OpenGL Shading Language versin 1.50 (GLSL)
Soporte de Geometra Shader
BGRA vrtice componente de pedidos
Fragmento Shader coordinar el control de convencin
Perfecta mapa cubo ltrado
Fragmento de profundidad de sujecin
Multisampled texturas y textura de las muestras para
lugares especcos de la muestra
Objetos de sincronizacin y cerca

La versin 3.1 (Longs Peak Reloaded) fue publicada el 24


de marzo de 2009, y presenta una serie de caractersticas 5.3.3 OpenGL 3.3
para hacer la API ms conveniente de utilizar, adems de
Publicada el 11 de marzo de 2010
las caractersticas orientadas al rendimiento:
OpenGL 3.3, simultneamente lanzado con OpenGL 4.0
Lenguaje de Sombreado OpenGL revisin 1.40 y complementada por un conjunto de nuevas extensiones
(GLSL)
ARB, porta tanta funcionalidad como es posible desde la
especicacin OpenGL 4.0 para su uso en la generacin
Texture Buer Objects - un tipo de nueva textura que
anterior de hardware GPU. Incluye GLSL 3.30.
contiene una matriz unidimensional de texels
Uniform Buer Objects para compartir o actualizar
5.4
datos de forma rpida

OpenGL 4.0

Texturas normalizadas rmadas (rango 1,0)

Publicada el 11 de marzo de 2010


Un mnimo de 16 unidades de textura accesibles por Tarjetas compatibles: Radeon HD serie 5000, nVidia
GTX serie 400;
el Vertex Shader
Reinicio de primitiva
Instancias - dibujo de objetos en mltiples ocasiones
a travs de la reutilizacin de los vertex data
CopyBuer API para copia rpida de datos, utilizada
en conjunto con OpenCL
Con la liberacin de la especicacin OpenGL 3.1, tambin fue publicada una extensin 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
lnea de soporte.
Funcionalidad heredada eliminada incluye:
Todas las opciones de funcin ja
Modo directo
Color index mode, por ejemplo, formatos de pixel
con paletas de colores

Caractersticas:[19]
OpenGL Shading Language versin 4.00 (GLSL)
Dos fases de sombreado que permiten a la GPU descargar el teselado geomtrico de la CPU.
Per-shaders fragmento de la muestra y de sombreado programable posiciones fragmento de entrada
para mayor calidad de representacin y anti-aliasing
de exibilidad.
Subrutinas Shader para una exibilidad de programacin aumentada signicativamente.
Separacin del estado de textura y de los datos de
textura mediante la adicin de un nuevo tipo de objeto llamado sampler objetos.
Dibujo de los datos generados por el API de
OpenGL o APIs externos, tales como OpenCL, sin
intervencin de la CPU.

5 VERSIONES
Operaciones de 64-bit de coma otante de doble
precisin de sombreado y entradas / salidas para
prestar mayor precisin y calidad.

Soporte para empaquetar varios valores de 8 bits y


16 bits en un nico valor de 32 bits, llevando a un
procesamiento ms eciente del shader y presin reducida en la memoria y el ancho de banda.

Mejoras de rendimiento, tales como shaders de geometra en instancias, instancias matrices y una con5.4.3 OpenGL 4.3
sulta de nuevo temporizador.
5.4.1

OpenGL 4.1

Anunciado el 26 de julio de 2010[20]


Tarjetas soportadas: Nvidia GeForce 400 series, Nvidia
GeForce 500 series, ATI Radeon HD 5000 series, AMD
Radeon HD 6000 Series
Esta nueva versin aade estas caractersticas adicionales
a la especicacin, 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

Publicado el 6 de agosto de 2012[22] Tarjetas Soportadas:


Nvidia GeForce 400 series, Nvidia GeForce 500 series,
Nvidia GeForce 600 series
Incluye la versin ms actualizada de GLSL en su
versin 4.30 (OpenGL Shading Language).
Clculo de shaders que aprovechan el paralelismo de
la GPU para todo lo relacionado con geometra o
grcos.
Almacenamiento en bfer de objetos Shader.
Consultas de parmetros de texturas para hallar los
lmites que las plataformas pueden tener para procesar las mismas.

Reduccin de tiempos de recompilacin

Alta calidad de comprensin en texturas ETC2/EAC


como caracterstica estndar.

La capacidad de vincular los programas de forma


individual a las cinco etapas programables (Vertex,
Control de mosaico, Evaluacin de el Teselado, la
Geometra, y Fragmento)

Compatibilidad total con las APIs de OpenGL ES


3.0.

Mejoras a la coma otante general de 64 bits compatible con agregado en OpenGL 4.0
5.4.2

OpenGL 4.2

Capacidades de depuracin que permiten recibir


mensajes de depuracin mientras se desarrolla la
aplicacin.
Vistas de texturas para anlisis de las mismas en diferentes formas sin replicacin de datos.

Incrementa la seguridad de la memoria.


Publicado el 8 de agosto de 2011[21] news/press/khronos Una extensin multi-aplicacin que aade robustez
enriches-cross-platform-3d-graphics-with-releaseal sistema, e impide que las aplicaciones que provoof-opengl-4.2-spec|ttulo=Khronos Enriches Crossquen un fallo y tengan que resetearse afecten a otras
Platform 3D Graphics with Release of OpenGL 4.2
que estn en ejecucin.
Specication}}</ref>
Tarjetas soportadas: Nvidia GeForce 400 series, Nvidia
GeForce 500 series, ATI Radeon HD 5000 series, AMD
5.4.4 OpenGL 4.4
Radeon HD 6000 Series, ATI Radeon HD 7000 series
Soporte para shaders con contadores atmicos y
load/store/atomic read-modify-write operations en
un nico nivel de una textura.
Capacidad de capturar geometra de la GPU en mosaico y dibujar varias instancias de una transform
feedback " para que los objetos complejos sean fcilmente replicados o cambiados de posicin.
OpenGL puede modicar 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.

Publicado el 22 de julio de 2013[23]


Buer Placement Control
Ecient Asynchronous Queries
Shader Variable Layout
Ecient Multiple Object Binding
Streamlined Porting of Direct3D applications
Bindless Texture Extension
Sparse Texture Extension

Documentacin

aparece en la denicin de su funcin glCombinerParameterfvNV() y su constante GL_NORMAL_MAP_NV.

La popularidad de OpenGL se debe en parte a su detallada documentacin ocial. El OpenGL ARB ha publicado una serie de manuales actualizados conforme la API
iba evolucionando. Son fcilmente reconocibles (y conocidos) por el color de sus tapas:

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 extensin, convirtindose as en estndar y utilizando la abreviatura ARB en sus nombres. La
primera extensin ARB fue GL_ARB_multitexture, pre El Libro Rojo - The Red Book: The OpenGL Pro- sentada en la versin 1.2.1. Siguiendo el camino marcado por la extensin, el multitexturing no es ya una extengrammers guide. ISBN 0-321-33573-2
sin opcional, sino que entr a formar parte del ncleo de
OpenGL desde la versin 1.3.
Libro de referencia y tutorial. Considerado libro de cabecera para programadores de
Antes de usar una extensin, los programas deben comOpenGL.
probar su disponibilidad y, despus, acceder a las nuevas
funcionalidades ofrecidas. Este proceso es dependiente
El Libro Azul - The Blue Book: The OpenGL Re- de la plataforma, pero bibliotecas como GLEW y GLEE
lo simplican.
ference manual. ISBN 0-321-17383-X
En esencia, una copia de la pginas del man de
OpenGL.

Las especicaciones para la mayor parte de las extensiones pueden encontrarse en el registro ocial de
extensiones.[24]

Incluye un poster desplegable con el diagrama


de la estructura de una implementacin ideal
de OpenGL.

8 Bibliotecas de utilidades

El Libro Verde - The Green Book: Programming Se han programado varias bibliotecas externas que aaOpenGL for the X Window System. ISBN 0-201- den caractersticas no disponibles en el propio OpenGL.
48359-9
Algunas de ellas son:
Libro sobre el 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 el 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-2

GLU: Ofrece funciones de dibujo de alto nivel basadas en primitivas de OpenGL. Las funciones de
GLU se reconocen fcilmente pues todas empiezan
con el prejo glu.
GLUT: API multiplataforma que facilita una rudimentaria funcionalidad para el manejo de ventanas
e interaccin por medio de teclado y ratn.
GLUI: Interfaz de usuario basada en GLUT; proporciona elementos de control tales como botones,
cajas de seleccin y spinners. Es independiente del
sistema operativo, sustentndose en GLUT para manejar los elementos dependientes del sistema.

Libro de referencia y tutorial para GLSL.

Extensiones

El estndar OpenGL permite a los fabricantes aadir


nuevas funcionalidades adicionales mediante extensiones
conforme aparecen nuevas tecnologas. 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 identica en el nombre de sus nuevas funciones o
constantes. Por ejemplo, la abreviatura de NVIDIA (NV)

9 Referencias para lenguajes de


programacin (bindings)
Para enfatizar las caractersticas multilenguaje y multiplataforma de OpenGL, se han desarrollado varios
bindings en muchos lenguajes. Algunos de los lenguajes
para los que estn disponibles dichos bindings son:
Ada: Ada OpenGL 1.1[25] soporta GL, GLU y
GLUT.

11 VASE TAMBIN
C#: Tao[26] es un framework para .NET que incluye
OpenGL entre otras bibliotecas multimedia.
D: vase[27] y.[28]
Embarcadero Delphi: Dot.[29]
Fortran: f90gl[30] soporta OpenGL 1.2, GLU 1.2,
GLUT 3.7.
Gambas: gb.opengl[31]
Genie
Lazarus-FreePascal: LCL/GLUT[32]
Java: JOGL[33] y LWJGL[34] entre otros; vase.[35]
Lisp: vase.[36]
Perl: vase.

[37]

Pike: tiene un interfaz nativo a OpenGL.[38] Adems, soporta GLU y GLUT.


Python: PyOpenGL[39] soporta GL, GLU y GLUT.

11 Vase tambin
GLSL - Lenguaje de alto nivel de shaders para
OpenGL
JOGL (Java OpenGL) - Biblioteca para usar
OpenGL en Java
OpenGL ES - Biblioteca para sistemas integrados
WebGL - Especicacin estndar para desplegar
grcos en 3D en navegadores web
OpenWF - Interfaz de abstraccin 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 programacin multiplataforma, para capturar, transportar, procesar, desplegar, y sincronizar medios digitales
OpenKODE - APIs nativos para los juegos en dispositivos de mano y las aplicaciones de medios
Comparacin entre Direct3D y OpenGL

Visual Basic: vase.[40]


XBase++: vase.[41]
Haskell: HOpenGL,[42] soporta GL, GLU y GLUT.
Vala

10

Miembros del Grupo Khronos

En 2008, algunos de los miembros del Grupo Khronos


son:
AMD
Apple
Blizzard
Intel Graphics Controllers
nVIDIA

11.1 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

11.2 Otras interfaces de grcos


Mesa 3D - Implementacin de cdigo abierto de
OpenGL
LWJGL (Lightweight Java Game Library) - Acceso
a OpenGL, OpenAL y varios dispositivos de entrada
VirtualGL - Comandos 3D entre servidor dedicado
y cliente

Para una lista completa y actualizada de los miembros del proyecto, vanse las listas de miembros,[43] 11.3 Aplicaciones OpenGL
contribuyentes[44] y acadmicos[45] del Grupo
Khronos.[46]
Anexo:Lista de Aplicaciones que usan OpenGL

12

Referencias

[1] Khronos Releases OpenGL 4.4 Specication


[2] SGI - OpenGL Overview.
[3] Boletn de prensa de Khronos anunciando la fusin con
ARB.
[4] Anlisis de la fusin de Khronos y ARB.
[5] OpenGL Architecture Review Board Working Group.
[6] OpenGL Architecture Review Board Working Group.
[7] Especicacin de OpenGL, versin 3.0.
[8] http://www.opengl.org/documentation/specs/version1.1/
state.pdf
[9] Especicacin del Sistema Grco OpenGL Versin
2.1.
[10] Iris GL, propiedad de SGI.
[11] Creacin del OpenGL ARB.
[12] Fin de OpenGL++.
[13] Anuncio pblico de Fahrenheit.
[14] Miembros del Proyecto Fahrenheit. 1998..
[15] Fin del Proyecto Fahrenheit.
[16] http://www.opengl.org/documentation/specs/version2.0/
glspec20.pdf
[17] Caractersticas de OpenGL 2.1.
[18] http://www.opengl.org/registry/doc/glspec30.20080811.
pdf
[19] Khronos webmaster (11 de marzo de 2010). Khronos
Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0. Khronos Press Releases. Consultado el 11-03-2010.
[20] OpenGL 4.1 Specication Released.

[31] Documentacin de Gambas - gb.opengl. Consultado el


2009.
[32] Lazarus- OpenGL Tutorial. Consultado el 2011.
[33] jogl:. Consultado el 2009.
[34] lwjgl.org - Home of the Lightweight Java Game Library. Consultado el 2009.
[35] Programming Language Bindings. Consultado el 2009.
[36] Welcome to OpenGL for MCL. Consultado el 2009.
[37] Programming Language Bindings. Consultado el 2009.
[38] pike.ida.liu.se: Modules. Consultado el 2009.
[39] PyOpenGL - The Python OpenGL Binding. Consultado el 2009.
[40] Programming Language Bindings. Consultado el 2009.
[41] Contenido del Paquete Acadmico. Consultado el
2009.
[42] http://haskell.org/HOpenGL/index.html
[43] Khronos Promoting Members. Consultado el 2009.
[44] Khronos Contributing Members. Consultado el 2009.
[45] Khronos Academic Members. Consultado el 2009.
[46] The Khronos Group: Open Standards, Royalty Free, Dynamic Media Technologies. Consultado el 2009.

13 Enlaces externos
Sitio web ocial de OpenGL
Sitio web de SGI sobre OpenGL
OpenGL en el Open Directory Project
Grupo Khronos

[21] se of OpenGL 4.2 Specication}}

NeHe Tutorials, tutoriales para el aprendizaje de


OpenGL

[22] Khronos Releases OpenGL 4.3 Specication with Major


Enhancements.

Proyecto Fahrenheit en Microsoft

[23] Khronos Releases OpenGL 4.4 Specication.

Black Byte Tutoriales en Espaol de OpenGL

[24] Registry (redirect). Consultado el 2009.

Why do game developers prefer Windows? post sobre OpenGL vs DirectX

[25] Index of /~bond/OPENGL/ADA. Consultado el 2009.


[26] News. Consultado el 2009. Texto The Tao Framework ignorado (ayuda)
[27] bindings - dsource.org. Consultado el 2009.
[28] derelict - dsource.org. Consultado el 2009.
[29] Nikita is no more! Elena is here! :). Consultado el 2009.
[30] f90gl: Fortran interface for OpenGL and GLUT. Consultado el 2009.

10

14

14
14.1

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

Text and image sources, contributors, and licenses


Text

OpenGL Fuente: http://es.wikipedia.org/wiki/OpenGL?oldid=79053233 Colaboradores: Deibiz xxl, Moriel, ManuelGR, Zwobot, Pirenne, Javier Carro, Yearofthedragon, Triku, Jynus, Sms, Jsanchezes, Daniel G., Jag2k4, Cinabrium, Rembiapo pohyiete (bot), Orgullobot,
RobotQuistnix, Unf, Superzerocool, Chobot, Sixstone, Adrruiz, FlaBot, Vitamine, Jmaslibre, YurikBot, GermanX, Gothmog, Otermin,
Gtz, Usrwp, Paintman, BOTpolicia, CEM-bot, Toranks, Willicab, Montgomery, Thijs!bot, Will vm, Jugones55, TXiKiBoT, Jotatsu, Reibot, Bedwyr, Biasoli, AlnoktaBOT, Dusan, VolkovBot, Aliamondano, Matdrodes, Shooke, AlleborgoBot, 3coma14, Muro Bot, El Pantera,
BotMultichill, SieBot, Danielba894, DaBot, Bigsus-bot, BOTarate, Suhrvivor, Mafores, Locos epraix, Jarisleif, Farisori, Leonpolanco, Poco a poco, Alexbot, Jmtorres, CestBOT, AVBOT, David0811, LucienBOT, DumZiBoT, Linfocito B, Cgarciagl, Luckas-bot, LordboT,
DavidGL, Marioxcc, ArthurBot, Manuelt15, Jkbw, AstaBOTh15, Otamay, EmBOTellado, TiriBOT, Codename, TorQue Astur, Rro4785,
Timotein, SamuraiBot, GrouchoBot, EmausBot, Entalpia2, Kakahuete, ChuispastonBot, MetroBot, Invadibot, SebrevBOT, W0lyllo, Elvisor, Flashlack, ProfesorFavalli, Zerabat, AdrianMaire, Addbot y Annimos: 64

14.2

Images

Archivo:Translation_arrow.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/2a/Translation_arrow.svg Licencia: CCBY-SA-3.0 Colaboradores: Este imagen vectorial fue creado con Inkscape Artista original: Jesse Burgheimer
Archivo:Yes_check.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/f/fb/Yes_check.svg Licencia: Public domain Colaboradores: Trabajo propio Artista original: SVG by Gregory Maxwell, simplied by Sarang
Archivo:_Pipeline_OpenGL_(es).png Fuente: http://upload.wikimedia.org/wikipedia/commons/6/64/Pipeline_OpenGL_%28es%29.
png Licencia: CC BY 2.5 Colaboradores: Image created by me. Artista original: Bedwyr

14.3

Content license

Creative Commons Attribution-Share Alike 3.0

También podría gustarte