viernes, 14 de junio de 2013

Tutorial 0 - Configurar OpenGL (Windows)

Tutorial para configurar OpenGL en Windows

Primero que nada debemos tener instalado Microsoft Visual Studio Express, yo prefiero la versión 2010 pero puedes instalar la de tu preferencia, el tutorial estará basado en la versión VS C++ 2010 el cual puedes conseguir en este enlace escoge el idioma que quieras (yo lo dejé en inglés) descargalo e instalalo.

Ahora bien, necesitamos instalar freeglut. Freeglut es una librería open source alterna a GLUT, que fué originalmente creada con el fin de permitir al usuario manejar una ventana donde pueda desplegar contenido creado con OpenGL en los ejemplos del RedBook. GLUT no ha sido actualizada ni mantenido por mas de 10 años y por esta razón nace FreeGLUT.

Luego de la pequeña charla procedemos a descargar FreeGLUT desde este enlace, el cual es un zip que contiene la última versión de freeglut 2.8.1 (para la fecha de Junio 2013) con las librerías y dlls ya compilados. Si descargamos la versión 2.8.1 directamente del repositorio de freeglut tendremos que compilar un proyecto dentro de las carpetas para obtener la librería y dlls.

Ahora bien, en teoría, deberíamos configurar VS para que pueda usar las librerías y agregar los dlls al sistema, pero no, NO vamos a hacer eso, en mi opinión es una mala práctica porque "ensuciamos" el VS y además nuestro proyecto no sería portable, en cambio, con incluir los archivos necesarios directamente en el proyecto podemos tener un VS limpio y un proyecto que puedes pasar a un amigo para que lo pruebe y funciona sin tener que explicarle donde debe poner los dlls.

Iniciamos el Visual Studio y creamos un nuevo proyecto.


Seleccionamos Win32 Console Application, le ponemos nombre a nuestro proyecto y hacemos click en Ok


Next...


Aquí seleccionamos "Empty Project" y Finish


Ahora se ha creado nuestro proyecto, primero, debemos agregar un archivo main.cpp para lo cual hacemos click derecho sobre la carpeta "Sources" de nuestro proyecto y vamos a Add > New Item...


Aquí seleccionamos C++ File (cpp) y le ponemos nombre, en este caso, main.cpp




Ahora si, tenemos nuestro archivo main y le colocamos el siguiente código que intenta iniciar el entorno de OpenGL y levantar una ventana:

#include "GL/freeglut.h"
#include <stdio.h>

int main(int argc, char** argv) {
printf("glutInit\n");
glutInit(&argc, argv);
printf("glutInitDisplayMode\n");
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
printf("glutInitWindowPosition\n");
glutInitWindowPosition(100, 100);
printf("glutInitWindowSize\n");
glutInitWindowSize(320, 320);
printf("glutCreateWindow\n");
glutCreateWindow("Hello, World");
printf("done\n");
return 0;
}

Intentemos compilar tanto en Debug como en Release



Obvio... va a fallar, pero es necesario que lo hagamos al menos una vez, para que el VS cree las carpetas en las que va a colocar el archivo ejecutable.

Ahora, ¡vamos a hacer que funcione!

Primero vamos a la carpeta de nuestro proyecto, por lo general se encuentra en /Mis Documentos/Visual Studio 2010/Projects/ ahí vamos a ver nuestro proyecto de prueba:


Si entramos vamos a ver 3 carpetas: Debug, Release y test (esta última es donde se encuentran los archivos fuentes del proyecto). Ahora bien, ¿recuerdas el archivo de freeglut que bajaste al inicio del tutorial? bueno, vamos a descomprimir el archivo y colocar el dll, la librería y los archivos de freeglut en sus respectivas ubicaciones.


Primero, copiamos el archivo freglut.dll ubicado en "/freeglut/bin/" de la carpeta de freeglut que acabas de descomprimir y lo pegamos dentro de la carpeta Debug de nuestro proyecto (es importante que sea dentro de la carpeta que esta en "/Projects/test/Debug" ya que dentro de test hay otra carpeta debug que contiene los archivos objeto resultantes de la compilación, ahí no va a ir el .exe final)


Repetimos lo mismo pero esta vez pegamos el DLL en la carpeta Release.

Ahora entramos en la carpeta test y vemos que esta nuestro archivo main.cpp. Vamos a copiar la carpeta lib que está en freeglut y la pegamos dentro de "/Projects/test/test" y hacemos lo mismo con la carpeta GL dentro de "/freeglut/include" y deberíamos tener algo asi:


Volvemos a Visual Studio e intentamos compilar...

Pero... ¿qué pasó? ¡no encuentra la librería! bueno, visual studio no tiene conocimiento de que estas usando una librería aparte a las que tiene instaladas y no sabe donde se encuentra. Como lo dije en un principio, en teoría deberíamos decirle al VS dónde se encuentran todos nuestros archivos de freeglut (tanto los .lib como los .h y pegar el .dll en system32 de windows) pero para que nuestro proyecto sea portable a otros VS agregaremos una línea de código a nuestro archivo main.cpp que le dice al compilador dónde se encuentra la librería

#pragma comment (lib, "lib/freeglut.lib")

De este modo el compilador busca la librería en la carpeta lib de nuestro proyecto y ahora si es posible compilar y ejecutar el ejemplo de prueba.

Es recomendable probar tanto en Debug como en Release pero nuestros proyectos deben ser siempre compilados en Release porque de esa manera el programa corre más rápido debido a que no tiene código extra que le mete el VS al ejecutable para poderlo debuggear.

Una vez compilado y ejecutado, deberíamos poder ver en la consola que todas las pruebas de inicialización de OpenGL culminaron correctamente y además, durante la ejecución, se peude observar muy velozmente que se levanta una ventana y se cierra.

Con esto hemos culminado el Tutorial 0 para configurar OpenGL en Windows.

No hay comentarios. :

Publicar un comentario

Reglas simples que debes seguir para comentar en mi Blog:

1. Si tienes una duda, haz tu pregunta lo más clara posible.
2. Debes ser respetuoso con todos.
3. No admito abuso verbal, política, racismo, odio, SPAM ni publicidad.

El incumplimiento de algunas de estas reglas resultará en la eliminación de tu comentario.