1. Introducción La informática gráfica es la
parte de la informática que se encarga de la
representación de gráficas en el ordenador. OpenGL
fue la primera librería gráfica que abordo el uso
eficiente de esos recursos, así como la
estandarización de los procedimientos de la
generación de gráficos.
1. Introducción Actualmente es un estándar sobre
gráficos por computadora, uno de los más
prestigiosos y utilizados del mundo.
2. ¿Qué es OpenGL? OpenGL es una
especificación estándar que define una API
multilenguaje y multiplataforma para escribir aplicaciones que
produzcan gráficos 2D Y 3D. Desarrollada por Silicon
Graphics Inc. (SGI) Su nombre viene del ingles Open Graphics
Library
2. ¿Qué es OpenGL? Existen implementaciones
eficientes de OpenGL suministradas por fabricantes para Mac Os
Microsoft Windows Linux Plataformas Unix PlayStation
2. ¿Qué es OpenGL? La especificación OpenGL
era revisada por el OpenGL Architecture Review Board (ARB),
fundado en 1992. ARB estaba formado por un nutrido conjunto de
empresas interesadas en la creación de una API consistente
y ampliamente disponible.
2. ¿Qué es OpenGL? Formaban el grupo destacadas
empresas: Silicon Graphics Compaq IBM Intel Microsoft Apple Sun
Microsystems…
2. ¿Qué es OpenGL? El comité ARB se encarga
de gestionar el estándar OpenGL para que vaya adoptando
nuevas tecnologías. Cuando una compañía
desarrolla una nueva tecnología se la presenta al ARB. Si
este lo acepta, se añade como extensión propia de
esa compañía para que se pueda utilizar en
OpenGL.
2. ¿Qué es OpenGL? OpenGL se utiliza en campos
como: CAD Realidad virtual Representación
científica y de información Simulación de
vuelo Desarrollo de videojuegos…
3. Historia Antes de la aparición de OpenGL, muchos
fabricantes tenían diferentes bibliotecas gráficas,
esto hacia que hubiera que tratar con interfaces muy diferentes y
escribir drivers específicos. Se subcontrataban equipos de
programadores para solventar esto, produciendo código
redundante y que la portabilidad de aplicaciones de una
plataforma a otra consumiera demasiado tiempo y entrañara
dificultad.
3. Historia Al principio de los años 1990 SGI era un grupo
de referencia en gráficos 3D para estaciones de trabajo.
Pero este estándar no era abierto, pero aun así su,
cuota de mercado era alta, ya que era considerado un
estándar puntero y facilidad de uso.
3. Historia La competencia de SGI fue capaz de introducir en el
mercado hardware 3D compatible con otro estándar abierto.
Esto hizo reducir su cuota de mercado y en un intento de
fortalecer su influencia en el mercado, decidió convertir
el estándar en un estándar abierto.
3. Historia SGI lideró la creación de OpenGL
Architecture Review Board (OpenGL ARB), grupo de empresas que
mantendría y extendería la especificación
OpenGL. 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.
3. Historia La segunda versión de OpenGL es en realidad la
séptima revisión desde el lanzamiento de la
versión 1.0. El 2 de agosto de 2006 se publicó
OpenGL 2.1. Siendo compatible con las versiones anteriores,
además aporta nuevas características entre las que
destacan:
3. Historia Sombreado programable Se pueden aplicar sombreados
sobre diferentes renderizados y generar distintos resultados que
se almacena en buffers. La aplicación de texturas no
está condicionada por su tamaño, no tiene por que
ser potencia de dos. Se pueden aplicar patrones sobre las dos
caras de las primitivas geométricas
3. Historia Destacar como competidor principal de OpenGL se debe
mencionar a Microsoft Direct 3D, que aunque solo esté
disponible para sistemas Windows goza de una gran
aceptación entre los fabricantes
4. Características de OpenGL OpenGL está enfocado a
la creación de contenido visual para su volcado sobre un
framebuffer que luego será mostrado en pantalla. OpenGL
basa su funcionamiento en una serie de modos configurables y la
ejecución de una serie de primitivas de dibujo que no son
más que la realización de segmentos,
polígonos, puntos o rectángulos de
píxeles.
4. Características de OpenGL Los comandos OpenGL se
organizan en secuencias y su procesamiento se realiza siempre en
el orden en que se reciben, aunque puede producirse un retraso
entre la ejecución de un comando y la
representación de sus efectos.
4. Características de OpenGL OpenGL proporciona mecanismos
para el control directo de las operaciones fundamentales en el
trabajo con gráficos en 2 y 3 dimensiones, incluyendo:
Tratamiento de luces Métodos de anti – aliasing
…etc.
4. Características de OpenGL El ámbito de
operación de OpenGL llega hasta el framebuffer pero en
ningún caso más allá. Es decir, queda bajo
la responsabilidad del sistema sobre que se ejecuta la
aplicación el control de las ventanas de la
aplicación, del volcado del framebuffer al monitor.
5. Arquitectura de OpenGL OpenGL implementa una arquitectura
cliente servidor, donde un programa solicita comandos y dichos
comandos son interpretados y procesados por el sistema OpenGL
(servidor). No es necesario que el servidor se sitúe en el
mismo ordenador que el cliente, permitiendo a la
especificación OpenGL ser “transparente a la
red”.
5. Arquitectura de OpenGL 5.1. OpenGL como una máquina de
estado OpenGL es una máquina de estado. Existen ciertas
variables de estado de la máquina como el color, por
ejemplo, que determinan el estado de la máquina
5. Arquitectura de OpenGL Un buen número de variables de
estado se refieren a modos que pueden ser habilitados o
deshabilitados con los comandos : glEnable() glDisable()
5. Arquitectura de OpenGL Además de los modos, las
variables de estado almacenan valores que pueden obtener:
glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv()
glGetPonterv() …etc
5. Arquitectura de OpenGL Es posible almacenar colecciones de
variables de estado en pilas con los métodos:
glPushAttrib() o glPushClientAttrib glPopAttrib() o
glPopClientAttrib y para recuperarlas después
5. Arquitectura de OpenGL 5.2. Flujo de renderización de
OpenGL La mayoría de las implementaciones de OpenGL
implementan un orden de operaciones idéntico, una serie de
etapas de procesamiento denominado flujo de renderización
de OpenGL ( OpenGL rendering pipeline)
5. Arquitectura de OpenGL Flujo de renderización de
OpenGL
5. Arquitectura de OpenGL No es una definición estricta ni
obligatoria, pero proporciona indicaciones bastante fiables sobre
el orden de las operaciones en OpenGL. Indicar que el flujo de
datos de la información geométrica es distinto que
el flujo de la información de píxeles. La segunda
parte del proceso es común para ambos tipos.
5. Arquitectura de OpenGL Flujo de renderización Display
lists Según el modo seleccionado ( geométrica o
píxeles), una serie de datos a mostrar pueden ser
mostrados inmediatamente cuando son creados o bien almacenarlos
para mostrarlos con posterioridad.
5. Arquitectura de OpenGL Evaluadores Las primitivas
geométricas están definidas en última
instancia como un conjunto de vértices. Las curvas
paramétricas y las superficies están definidas por
puntos de control y funciones polinómicas. Los evaluadores
proporcionan los mecanismos para obtener los vértices
utilizados para representar las superficies a partir de los
puntos de control
5. Arquitectura de OpenGL Operaciones Per – vertex Antes de poder
procesar la información geométrica los
vértices debe ser convertidos en primitivas. Es en esta
fase donde se procesa la aplicación de texturas,
calculando las zonas a mostrar y su posición. Las
modificaciones debidas a la iluminación también son
procesadas en esta fase.
5. Arquitectura de OpenGL Ensamblado de primitivas En esta fase
deben calcularse los puntos que por su posición quedan
fuera de la imagen visible, esto es aquella información
geométrica que no debe ser renderizada. También
debe calcularse las intersecciones entre primitivas y se realiza
el procesamiento de la perspectiva.
5. Arquitectura de OpenGL Operaciones sobre píxeles La
información de píxeles es procesada de manera
diferente. Ensamblado de texturas Las aplicaciones OpenGL pueden
aplicar imágenes de texturas sobre los objetos
geométricos para proporcionarles una apariencia más
realista.
5. Arquitectura de OpenGL Rasterización La
rasterización es la conversión de los datos, tanto
geométricos como de píxeles, en fragmentos. Cada
cuadro es un fragmento que se corresponde con un pixel en el
framebuffer. Para esta conversión es necesario tener en
cuenta los vértices, las líneas, las
intersecciones, los tamaños de puntos… etc.
5. Arquitectura de OpenGL Operaciones sobre fragmentos Una vez
que todas las operaciones anteriores han sido realizadas y como
último paso antes del volcado de los fragmentos al
framebuffer, es necesario realizar una serie de operaciones que
pueden alterar distintos fragmentos.
5. Arquitectura de OpenGL 5.3. Invarianza en OpenGL Debido a que
OpenGL no es una especificación exacta a nivel de
píxel no está garantizada la coincidencia entre dos
imágenes producidas por diferentes implementaciones de
OpenGL. La invarianza está expresada en la
especificación OpenGL por el cumplimiento de varias
reglas.
6. Bibliotecas relacionadas con OpenGL Existen una serie de
bibliotecas para facilitar el trabajo con OpenGL: GLU (OpenGL
Utility Library) Crear matrices, visualizar superficies y
cuadriculación de polígonos. Esta biblioteca suele
estar incluida en las implementaciones OpenGL y sus
métodos son fácilmente reconocibles porque
comienzan por el prefijo glu.
6. Bibliotecas relacionadas con OpenGL GLX Y WGL GLX da soporte
para máquinas que utilicen X Windows System y permite
realizar todos los procesos gráficos relacionados con las
ventanas de la aplicación. WGL es el equivalente para
sistemas Microsoft
6. Bibliotecas relacionadas con OpenGL AUX La biblioteca de
funciones AUX fue desarrollada en la etapa inicial de desarrollo
de OpenGL por SGI para servir de apoyo a la creación de
pequeños programas de demostración. Actualmente
está declarada obsoleta y ya no está ni soportada
ni actualizada.
6. Bibliotecas relacionadas con OpenGL OpenGL Utility Toolkit
(GLUT) Sistema de ventanas, independiente del sistema usado.
Ofrece una interfaz común para múltiples
plataformas para el manejo de ventanas, buffers,
renderización de texto, entrada por teclado,
menús.
7. Aplicaciones Existen múltiples de aplicaciones para las
que OpenGL ha servido como base. Aplicaciones desarrolladas en
diferentes plataformas: Windows Unix / Linux Mac Os Java Sistemas
embebidos A continuación se mencionan algunas aplicaciones
desarrollados por OpenGL:
7. Aplicaciones Simulación (Windows) Aerofly Cloth – Sim
Simulación de control aéreo Simulación en
Tiempo real de ropa
7. Aplicaciones Simulación (Linux) Dex X- Vision
Desarrollo, análisis y visualización de
múltiples cuerpos. Visualización y animación
de datos
7. Aplicaciones Juegos (Windows) PinBall Chess Commander Juego
del PinBall Juego de Ajedrez
7. Aplicaciones Juegos (Linux) FollBilliard khunPhan
Simulación física del juego del billar Puzzle
7. Aplicaciones Great Stella MVE Estudio de poliedros
Visualización en 3D de datos médicos Ciencia y
Análisis (Windows)
7. Aplicaciones Visit Medit Visualización y
parametrización de múltiples datos.
Visualización científica Ciencia y Análisis
(Linux)
8. Conclusiones OpenGL es una buena elección para
generación de efectos visuales, escenas, etc, debido a su
portabilidad, estandarización y potencia gráfica.
OpenGL esta pasando a segundo plano ante los nuevos programas de
diseño que realizan tareas automáticamente. Se
prevee que con la versión 2.0 se produzca un
relanzamiento.
Bibliografía OpenGL Programming Guide OpenGL Programming
Guide, Second Edition. Addison Wesley. Mark Segal, Kurt Akeley.
The OpenGL Graphics System: A Specification, 2004. Wright,
Richard S.; Lipchak, Benjamin. OpenGL, 1ª Ed. Anaya
Multimedia. http://www.opengl.org/ http://www.sgi.com/