Dead Channel






      "The sky above then port was the color of television, 
       tuned to a dead channel..."
      Neuromancer


8 August, 2006

OpenGL y Bloodshed

Escrito a las 23:54 en la categoría: Juegos

Mientras (re)aprendo OpenGL iré contando los escollos que me encuentre en el camino y cómo los he solucionado. Mi primer problema ha sido escoger el entorno de programación y echar a correr mi primer ejemplo. Últimamente he estado programando con el Bloodshed para C++, así que para no cambiar de entorno de primeras quería usar ese. No sé porqué no he conseguido echar a andar ningún programa con la GLUT, me da siempre problemas al linkar. Así que después de varios intentos me decidí por la que viene en el ejemplo de codigo OpenGL del Blooshed (nuevo proecto/Multimedia/OpenGL) y que utiliza también en el framework del wiki de OpenGL (Frameworks para OpenGL)

Pero antes de seguir, detengámonos un poco para ecplicar que es todo estos nombres que puden sonar a nuevos:

¿Qué es OpenGL? Es una API (Application Programming Interface) para gráficos 2D y 3D multiplataforma. Lo que quiere decir que es un conjunto de librerías que nos permiten plasmar en pantalla gráficos 2D y 3D.

¿Qué es la GLUT (GL Utility Toolkit)? Es un conjunto de funciones que facilitan la entrada y salida de datos con OpenGL. Esta librería permite crear ventanas, gestionarlas, recoger la entrada de teclado y del ratón, dibujar primitivas más complejas que las de OpenGL y unas cuantas cosas más.

¿Qué es la windows.h? Pues aun no sé mucho de ella. Solo que es una librería que me permite poner ventanas de windows y gestionar la entrada salida de una forma mucho menos cómoda e intuitiva que la GLUT, pero por ahora es la que puedo usar (Si a alguien que lea esto le funciona l aGLUT en el Blooshed que me avise, aunque de todas formas pronto provaré con Eclipse y ya os contaré.)

Bien, ya que sabéis de que va el tema os contaré el par de cosillas que hay que hacer para poder trabajar con OpenGL en Bloodshed y poder centrarnos en aprenderlo sin preocuparnos de mucho más :)

Los dos ejemplos mencionados nos servirán para lo que acabo de proponer. Aunque personalmente prefiero el Framework del wiki de OpenGL. Aunque tampoco hace alarde de una gran modularización sí que es cierto que nos separa el código que nos interesa del que no tanto en dos archivos, con lo que si no quremos no tenemos que mirar siquiera cómo va eso de la ventanita con windows.h.

En el ejemplo del Bloodshed solo tendremos que poner el código OpenGL que queramos probar justo a continuacón del comentario que dice algo así como “/* OpenGL animation code goes here */” Algo que resulta trivial en cuanto sabemos 2 palabras de inglés.

En mi preferido solo tendremos que copiar el codigo que aparece en la página en los dos archivos que indica (Framework.h y OpenGLBase.cpp) para Windows. Luego nos vamos abajo del todo y copiamos el tercer archivo, el render.cpp. Creamos estos archivos en un proyecto de Blooshed, los guardamos y casi estará todo hecho. Solo nos queda añadirle un par de parámetros al linker para que utilice la biblioteca OpenGL. Pinchamos en “Proyecto/Opciones de Proyecto”. Luego, dentro de la ventana que nos aparece, en la pestaña de “Parámetros” y en el área de texto de linker escribimos: “-lopengl32″ y “-lglu32″ separados por un intro. Y yá está.
Una vez hecho ésto deberíamos poder darle a compilar y ejecutar sin problemas el programita. Nos aparecerá el típico triángulo con la gama de colores girando sobre su centro.

Para escribir nuevo código solo tendremos que irnos al archivo “render.cpp” y sustituir el código del triángulo por el que queramos. En los siguientes tutoriales del wiki siempre nos dan el render.cpp correspondiente, con lo que vamos viendo los fundamentos de OpenGL en funcionamiento sin problemas.

Para entender mejor algunas de las funciones de OpenGl también disponemos de los Tutores de Nate Robins en los que podremos modificar los parámetros de las funciones y ver en tiempo real el efecto que producen nuestros cambios. Para empezar no está nada mal. La verdad es que cuando di la asignatura de Gráficos en la carrera no me enterá de la mitad porque el profesor era malísimo, pero al menos me sentó algo de base, (minúscula y sobre todo matemática) y de interés por el tema. Con estos tutoriales podemos hacer algo, pero no creáis que con eso ya se sabe OpenGL, hay mucho que aprender y lo mejor sería organizarlo un poco más modular de como se nos presenta en la web.

Antes de empezar hay que tener en cuenta una cosa muy importante sobre el funcionamiento de OpenGL: (more…)