February 11th, 2008

GLee es una librería que permite cargar extensiones de OpenGL de manera fácil y segura sin necesidad de escribir mucho código, es distribuida bajo una licencia modificada BSD. La librería es multiplataforma, funciona sobre Windows, Linux, OS-X, FreeBSD y también con algunos sistemas Unix que usen X-Windows. Hasta la versión actual permite el uso de 362 extensiones, incluyendo las creadas para la generación 8 de Nvidia GeForce, lo que garantiza que sola las muy "exóticas" extensiones esten por fuera. Un dato interesante es que también permite chequear la versión del driver de OpenGL instalado por ejemplo:

C++:
  1. #include <gl\GLee.h>   
  2. ...
  3. if (GLEE_VERSION_2_1) 
  4. {
  5.       //Llamado seguro de funciones spec 2.1
  6. }
  7. else
  8. {
  9.      //Configuración mas baja o mensaje a usuario
  10. }

De manera similar para comprobar la disponibilidad de una extensión:

C++:
  1. #include <gl\GLee.h>   
  2. ...
  3. if (GLEE_SGIS_MULTISAMPLE) 
  4. {
  5.       //hora de antialias
  6. }
  7. else
  8. {
  9.      //bordes escalonados y menos proceso
  10. }

Una característica importante de esta librería es que trabaja en modo perezoso, así que la disponibilidad de las extensiones solo se verifica la primera que se llama una determinada extensión y es verificada para esa extensión únicamente. La última versión de la librería puede ser descargada desde http://www.elf-stone.com/glee.php , sin duda vale la pena utilizarla si se va a trabajar con extensiones, que son al mismo tiempo la característica "brillante" y engorrosa de OpenGL.

January 10th, 2008

Este tutorial agrega un elemento con el que se podría dar por terminado la especificación clásica de OpenGL, se trata de texturas, un tema que acompaña aun desde sus origines 2d a los gráficos por computadora. Para el caso de este tutorial se mostraran las diferentes propiedades y funcionalidades asociadas al manejo de texturas en OpenGL.

Existen cuatro tipos básicos de texturas en OpenGL GL_TEXTURE_1D, GL_TEXTURE _2D , GL_TEXTURE _3D y GL_TEXTURE_CUBE_MAP. Al igual que con iluminación, culling y otras propiedades, el texturizado puede ser activado y desactivado via glEnable() y glDisable(), utilizando cualquiera de los cuatro tipos de textura. Para los propósitos de este tutorial se tratará con las texturas bidimensionales, debido a que en principio es la más utilizada.

Se puede decir que para mostrar una textura en OpenGL hay que hacer cuatro cosas básicas:

  1. Cargar la textura desde algún lugar de almacenamiento, lo que implica leerla desde algún tipo de formato (png, bmp, jpg, gif, etc) y ponerla en memoria.
  2. Configurar las características de presentación de la textura, es decir, como OpenGL debe interpretarla y mostrarla.
  3. Generar un objeto-textura y con esto es necesario obtener un identificador para ésta.
  4. Asociar la textura a una o varias primitivas, especificando para cada caso la forma en que debe ser mapeada.

Debido a la gran variedad de formatos existentes y a la cantidad de posibilidades que tiene cada uno (compresión, profundidad de color, transparencia, paleta, etc), es dispendioso realizar un cargador funcional para videojuegos. Por suerte muchas personas ya han realizado el trabajo duro =) , por lo que basta a acudir a uno de los tantos proyectos Open Source para obtener cargadores de calidad libres de costos por licenciamiento.
Continuar Leyendo... »