510 likes | 729 Views
Introducción a OpenGL. Mª del Carmen Santos. Índice. 1. Introducción. 2. ¿Qué es OpenGL?. 3. Historia. 4. Características de OpenGL. 5. Arquitectura de OpenGL. 6. Bibliotecas relacionadas con OpenGL. 7. Aplicaciones. 8. Conclusiones. 1. Introducción.
E N D
Introducción a OpenGL Mª del Carmen Santos
Índice • 1. Introducción • 2. ¿Qué es OpenGL? • 3. Historia • 4. Características de OpenGL • 5. Arquitectura de OpenGL • 6. Bibliotecas relacionadas con OpenGL • 7. Aplicaciones • 8. Conclusiones
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() glGetPonterv() …etc glGetDoublev() glGetFloatv() glGetIntegerv()
5. Arquitectura de OpenGL Es posible almacenar colecciones de variables de estado en pilas con los métodos: glPushAttrib() o glPushClientAttrib y para recuperarlas después glPopAttrib()o glPopClientAttrib
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 Java Mac Os Sistemas embebidos A continuación se mencionan algunas aplicaciones desarrollados por OpenGL:
7. Aplicaciones Simulación (Windows) Cloth - Sim Aerofly Simulación en Tiempo real de ropa Simulación de control aéreo
7. Aplicaciones Simulación (Linux) X- Vision Dex Visualización y animación de datos Desarrollo, análisis y visualización de múltiples cuerpos.
7. Aplicaciones Juegos (Windows) Chess Commander PinBall Juego de Ajedrez Juego del PinBall
7. Aplicaciones Juegos (Linux) khunPhan FollBilliard Puzzle Simulación física del juego del billar
Ciencia y Análisis (Windows) 7. Aplicaciones MVE Great Stella Visualización en 3D de datos médicos Estudio de poliedros
7. Aplicaciones Ciencia y Análisis (Linux) Medit Visit Visualización científica Visualización y parametrización de múltiples datos.
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/