Introducción a OpenGL PDF Imprimir E-mail
Escrito por Elmessias   
Miércoles, 03 de Marzo de 2010 11:15

 

 

Introducción a OpenGL

Introducción

Este tutorial contiene algunas explicaciones que dan respuestas a preguntas como ¿Que es OpenGL? ¿Para que se puede utilizar? ¿Que estructura tiene? ¿Donde puedo bajarme las librerías?. Y tambien contiene un poco de historia de como apareció esta magnífica librería. Más que tutorial podríamos clasificarlo como FAQ sobre OpenGL.

 

Un poco de historia

OpenGL es un estandar sobre gráficos por computadora. Hoy día es uno de los estandares gráficos más conocido del mundo. En 1982 nació en la Universidad de Standford el concepto de "graphics machine" y este fué utilizado por Silicon Graphics Corporation en su propia estación Silicon IRIS para crear un renderizador. Así nacio la librería IRIS GL. A raiz de esto, allá por 1992 muchas empresas del hardware y software se pusieron deacuerdo para desarrollar conjuntamente una librería gráfica libre: OpenGL. Entre estas empresas destacaban Silicon Graphics Inc., Microsoft, IBM Corporation, Sun Microsystems, Digital Equipment Corporation (DEC), Hewlett-Packard Corporation, Intel e Intergraph Corporation. Así nacio OpenGL (Open Graphics Library). La característica de ser "Abierta" significa que un programa escrito para una plataforma puede ser facilmente convertible a practicamente cualquier tipo de plataforma, obteniendo practicamente los mismo resultados :). Esta era la principal novedad, ya que liberaba a los programadores de escribir programas para un hardware concreto: Si el hardware (gráfico) soporta una determinada función la ejecuta, y si no lo soporta pues le pasa el control al Micro y que le ejecute el.

¿Que es OpenGL?

Desde el punto de vista del programador OpenGL es una API para interactuar con dispositivos gráficos y aceleradoras 3D. Contiene cerca de 150 comandos que nos ayudan a definir objetos, aplicar transformaciones a esos objetos, cambiar sus propiedades (color, textura, luz...), posición de la cámara... entre otros. Tambien hay que tener claro que OpenGL es una librería gráfica, no posee funciones para el control de Audio, Red o Control de Entrada.

¿Qué ofrece esta librería a los programadores?. Las principales posibilidades son:

* Primitivas geométricas y raster: Nos permite utilizar todas las primitivas geométricas básicas: puntos, lineas, polígonos. Y del raster: un bitmap, imagen.

* Â-splines: Las B-splines son usadas para dibujar lineas curvas.

* Transformaciones de vista y modelo: Gracias a estas transformaciones podemos facilmente transladar, rotar y escalar los objetos dentro de la escena y a su vez mover la cámara.

* Trabajar con el color: OpenGL nos permite operar con colores en modo RGBA (red-green-blue-alpha) o usando Modo Indexado, donde los colores se seleccionan desde una paleta.

* Eliminación de lineas y superficies ocultas: Por medio del algoritmo Z-Buffer

* Doble buffer: OpenGL nos permite utilizar un buffer o dos. El buffer doble es usado para eliminar el parpadeo de las animaciones. Cuando se está mostrando un frame en el buffer primario el siguiente se dibuja en el double buffer y cuando está terminado se copia al buffer primario, así se eliminan esos parpadeos.

* Mapeado de textura: Algo vital en cualquier API gráfica 3D

* Antialiasing: Nos permite suavizar los bordes de polígonos y lineas. Este suavizado se realiza cambiando la intensidad de los pixels adyacentes a la linea que procesamos consiguiendo un efecto de "difuminación" con la consiguiente eliminación de esos zig-zag tan desagradables :)

* Luces: Nos permite establecer la fuente de la luz, su posición, su intensidad, color...

* Efectos atmosféricos: Por ejemplo niebla o humo.

* Transparencia.

* Display List.

Implementaciones OpenGL

A continuación repasamos algunas de las implementaciones más importantes sobre OpenGL:

Microsoft OpenGL: Como no podía ser de otra manera, Microsoft tiene su propia implementación de OpenGL. Se comenzó a incluir en el Windows NT 4.0 y en Windows 95 Release 2. La diferencia de esta implementación con la de SGI es que hace uso del hardware disponible y si no disponemos de aceleradora renderiza utilizando acelaración por software.

SGI OpenGl para Windows: Obtiene un rendimiento mejor que la de Microsoft. Pero otra vez nos vuelve a desilusionar Microsoft cuando en 1998 hace un convenio con SGI y este deja de fabricarla oficialmente >:( Los ficheros de cada implementación son:

SGI: opengl.dll, glu.dll

Microsoft: opengl32.dll, glu32.dll

OpenGL ports y miniports específicos: A veces los desarroladores de hardware tambien crean sus propias miniports para garantizar la compatibilidad con su tarjeta gráfica, utilizando además las características nuevas que pueda incluir.

MESA: Podeis mirar la página del autor de Mesa (Brian Paul) en Mesa Homepage segun su autor:

" Mesa es una librería gráfica 3D que utiliza la API de OpenGL. Mesa no puede ser llamada una implementación de OpenGL porque no he podido obtener la licencia de OpenGL de SGI. Aparte de este problema, puedes encontrar en Mesa una alternativa totalmente válida para OpenGL. "

" La mayoría de las aplicaciones escritas en OpenGl pueden ser recompiladas con Mesa sin hacer ningún cambio en el código "

El código completo de Mesa está bajo licencia GPL :) y se puede ejecutar en los siguientes sistemas:

UNIX/X11, Linux, Amiga, Apple Macintosh, BeOS, NeXT, OS/2, MS-DOS, VMS y Windows 95/98/NT

Mesa tambien soporta aceleración por hardware 3Dfx Voodoo. Para más cuestiones mirar el Mesa FAQ

 

Librerias Adicionales OpenGL

La librería principal de OpenGL nos suministra todas las funciones necesarias para mostrar un entorno 3D aunque hay algunas operaciones que son algo tediosas de realizar utilizando solo esta librería. Estas son por ejemplo calcular la matriz de proyección. Para esto se han desarrollado tambien unas librería auxiliares:

GLU: Esta librería acompaña a la OpenGL principal. Incluye funciones más complejas que GL por ejemplo difinir un cilindro o un disco con un solo comando, tambien contiene funciones para trabajar con splines y operaciones con matrices.

GLUT: Esta librería es independiente de la librería OpenGL de cada plataforma. Esta librería no incluye funciones adiconales para OpenGL :( pero nos permite utilizar funciones para el tratamiento de ventanas, teclado y ratón. Para trabajar con OpenGL en cualquier plataforma, primero tenemos que inicializar una ventana (y esto es diferente entre Windows y Linux por ejemplo). GLUT nos permite crear ventanas y controlar la entrada independientemente de la plataforma utilizada :). Aunque tambien contiene comandos para crear conos, tazas de té...

GLAUX: Esta librería, muy parecida a GLUT, es la que Microsoft ha desarrollado para Windows. Mantiene practicamente la misma estructura que la GLUT con el defecto de que solo sirve para Windows, mientras que GLUT sirve para cualquier plataforma.

GLX: Esta es la librería utilizada para trabajar en un sistema de X-Windows (Linux), permite no sólo renderizar en la máquina local, sino tambien a travez de una red.

Tambien hay otras librerías más específicas para el control de entrada, sonido, red.... Evidentemente podemos utilizar las DX, aunque tambien debes saber que hay una colección de OpenXX que incluyen practicamente las mismas características (algunas menos, todo hay que decirlo) que DX, como son OpenAL (Audio), OpenNL (Red), OpenIN (Entrada)...

Última actualización el Miércoles, 03 de Marzo de 2010 12:20
 

| Design by: LernVid.com |