"Ningún juego dura tanto hasta que te lo terminas como el que te programas tú mismo, ninguno te absorbe tanto y ninguno te produce tanta satisfacción cuando lo has acabado"
El juego que más tardas en terminar es el que programas tú mismo y, ademas,  las cosas dificiles dejan de serlo cuando se saben hacer, asi que ... ¡ Al tema !.
Este curso intenta ser facilÃsimo de comprender y de seguir. Con OpenGL y C++ seremos capacer de programar juegos para PC.Â
Vamos a entrar en la programación en Linux, concretamente con XWindow (X11) y OpenGL. Iremos poco a poco, como es habitual. Al terminar el capÃtulo seremos capaces de hacer un pequeño programa que visualiza una ventana en la que podemos pintar con OpenGL y capturamos eventos como el teclado y el ratón.
Llegamos, por fin, a los "shaders", a la programación de la tarjeta gráfica o GPU (Graphics Processing Unit). Veremos como cargarlos y usarlos. Con este tema nos adentramos en la versión 2.0 de OpenGL, aunque se pueden usar desde la versión 1.5, si el hardware lo permite, a traves de extensiones.
Este capÃtulo habla del billboarding con OpenGL y ya de paso se verán asuntos que serán muy útiles sobre el espacio tridimensional. Además los billboards son muy usados, desde para simular árboles o hierba, a los sistemas de partÃculas, pasando por otros usos varios. Veremos 4 tipos de billboards.
En este capitulo veremos el uso de la libreria FTGL para renderizar texto con OpenGL. Ya vimos en su momento la forma de poner texto en pantalla pero el metodo que usamos entonces puede ralentizarnos el programa y es poco versatil, permite hacer pocas cosas con el texto.
Seguimos avanzando con OpenGL y nos adentramos en la version 1.5 con una de las caracteristicas mas necesarias para el rendimiento cuando programamos graficos, los Vertex Buffer Objects o VBOs que nos permiten hacer mejor uso de la aceleracion grafica de nuestra tarjeta. En este capitulo no habra cambios visibles en el resultado de nuestra pequeña escena pero, internamente el cambio sera muy grande; tanto es asi que a partir de la version 3.0 de OpenGL lo anterior sera declarado "deprecated" (obsoleto) y en la version 3.1 de OpenGL sera la unica forma de pintar.
En este capitulo saldremos por fin de la version 1.1 de OpenGL y nos adentraremos en la version 1.3 (o anteriores con extension de multitextura). Veremos las multitexturas, multiples texturas aplicadas a la misma superficie, y para ello usaremos GLee tal y como vimos en el capitulo anterior. No sera un capitulo complicado si se ha llegado hasta este punto del curso pero sera un ejercicio liberador al dejar la vieja version 1.1 y abrirnos un mundo de capacidades graficas en nuestra tarjeta.
Este capitulo sera mas teorico que otra cosa, aunque al final veremos algo de codigo. El tema de las extensiones y versiones de OpenGL es uno de los mas equivocos en principio, para quienes se acercan a esta libreria grafica. En este capitulo intentaremos que el tema quede claro y zanjado definitivamente para poder seguir avanzando sin problemas con OpenGL. A partir de aqui podremos usar cosas que son habituales pero que sin conocer el tema de las extensiones y versiones no estarian a nuestro alcance.
Llegamos por fin, a uno de los temas que mas interesan al ser ya, muy vistoso el resultado; la carga de modelos hechos con un programa de diseño 3D. El tema no es facil. Tiene la complicacion inicial de conocer el formato del fichero donde esta el modelo. Luego la carga puede ser mas o menos laboriosa. Al final tendremos que tener el modelo cargado de forma que lo podamos pintar lo mas eficientemente posible. En nuestro caso usaremos el formato de modelos propio del programa Caligari truSpace, cuyos ficheros tienen extension ".COB". Lo haremos en su forma ASCII, los que se graban como fichero de texto y podemos editar con un sencillo editor. Esto pemite saber exactamente lo que hay dentro del fichero y no depender de unas especificaciones parciales y en ingles. Luego pintaremos el modelo usando el metodo de "vertex arrays".
Llegamos a un tema interesante y muy util en cierto tipo de juegos. La seleccion de objetos. Esta puede ser de objetos 3D o 2D, en todo caso veremos 2 metodos para hacerlo, el propio de OpenGL y otro marca de la casa (mio). Los metodos pueden ser muchos como ocurre en todos los temas de programacion. Estos dos metodos se pueden variar, mezclar, desechar y usar otro ... a gusto del programador.
En este capitulo vamos a tocar un tema al que todos los programadores de OpenGL en Windows llegan, tarde o temprano. Cambiar el programa a pantalla completa o al reves, y cambiar la resolucion son temas puramente de programacion Windows. Al terminar este capitulo ya no tendremos dudas al respecto.
Si, eso es lo que vamos a hacer en este capitulo. Con pocas modificaciones y manteniendo casi intacta la estructura del juego y los calculos principales, somos capaces, con lo que hemos aprendido en otros capitulos del curso, de hacer el "Rompe Ladrillos" en 3D.
Este capitulo es una especie de check point del curso para comprobar que se puede hacer con lo que ya sabemos. Haremos paso a paso, el tipico juego de romper ladrillos (Arkanoid), solo usando 2D, para comprobar de lo que somos capaces y el resultado nos de animos para seguir. Aviso: el tema sera larguito, pero satisfactorio.
En este capitulo veremos uno de los apartados mas importantes para un juego, teclado y raton. Veremos tambien como vamos a modificar la camara en OpenGL, lo que nos permitira ver nuestra escena desde otro lugar o mirar a otra parte. Al terminar el capitulo estaremos ya en condiciones de pensar que podemos hacer un juego simple.
En este capitulo veremos una serie de cosas tan necesarias como cualquier otra cosa pero menos vistosas, aunque el texto en pantalla nos hace falta ya como el comer. Cuando seamos capaces de hacer una especie de "printf" en OpenGL, lo usaremos para saber los Frames Por Segundo (FPS), la velocidad a la que nuestro programa se mueve y controlarla.
Veremos en este capitulo el tema de la iluminacion y como lo trata OpenGL. El aspecto de nuestro programa cambiara de nuevo a mejor, de forma que la impresion de 3D sera total. Veremos como definir luces, sus componentes, una nueva parte del vertice, la normal, y algunas cosas mas.
Introducimos texturas en nuestro programa y el cambio es radical. Ahora cualquier cosa que ponemos en pantalla con una bonita textura luce como nunca. Esto nos obligara a desarrollar nuestra faceta artistica. Veremos como avanza nuestro programa. Veremos tambien otras cosas con las que nos encontraremos, como la pila de matrices y el blending (para transparencias). Todo clarito clarito como siempre.
Por fin entramos en 3D, pero eso supone mas conceptos que hay que entender como por ejemplo el uso de matrices... pero no hay que preocuparse. Las entenderemos para saber que estamos haciendo, y los calculos los hara OpenGL para nosotros.
En esta entrega veremos como cambiar la proyeccion de nuestra escena sobre la pantalla de acuerdo con nuestras necesidades, de forma que seremos capaces de dibujar escenas en 2D controlando el sistema de coordenadas.
En esta entrega del curso haremos el primer dibujo con OpenGL pero antes seguiremos aclarando conceptos, ya que con las ideas claras, despues todo sera mas facil.
El primer concepto sera el de los ejes de coordenadas que usaremos con OpenGL para que no haya confusion a la hora de escribir coordenadas. Asi, en pantalla, sera el eje Y la altura, el eje X el ancho y el espacio virtual que se adentra en la pantalla sera el eje Z pero con coordenadas negativas.
El programa basico con el que empezaremos a trabajar. Primero creamos un programa minimo al que ir añadiendo cosas e ir compilando y viendo como queda. No es muy ortodoxo, pero no somos profesionales. ¡Al tema!...