30AugOpenGL y GLUT en Visual C++
Dado mi anterior post sobre OpenGL y GLUT en XCode, he decidido complementarlo con este nuevo post que explica cómo configurar OpenGL y la librería GLUT en el entorno de desarrollo por excelencia en el mundo de MS Windows, Visual Studio. En este caso concreto utilizaremos Visual C++ en su versión gratuita, Visual C++ Express Edition 2008, que se puede descargar desde la página web de Microsoft.
Una vez instalado, nos disponemos a descargar la librería GLUT para Win32 desde la página de Nate Robins o directamente desde este enlace. Al descomprimir el zip descargado nos encontramos con 4 ficheros y un readme.
A continuación abrimos Visual C++ para empezar a configurarlo para incluir la librería. Primero vamos a Herramientas/Opciones….
En la ventana que se nos abre, seleccionamos en el árbol de la izquierda Proyectos y soluciones/Directorios de VC++.
En el desplegable de la esquina superior derecha seleccionamos “Archivos de inclusión“.
Hacemos clic sobre el icono de la carpeta para añadir un nuevo archivo de inclusión que podemos elegir haciendo clic en el botón con los tres puntos suspensivos. Ahí seleccionamos la carpeta de los archivos de glut (glut-3.7.6-bin).
En esta misma ventana seleccionamos ahora “Archivos de biblioteca” mediante el mismo procedimiento incluyendo también la carpeta de la librería.
Ahora debemos copiar la DLL que se incluye en el paquete de la librería en algún lugar en el que Windows la localice, por ejemplo, en C:\WINDOWS\system32.
Ahora ya podemos crear un nuevo proyecto vacío mediante el menú Archivo/Nuevo/Proyecto.
Elegimos en General, la opción de Proyecto vacío y establecemos un nombre para el proyecto, en este caso “Segmentation Fault”.
A continuación, añadimos un fichero en el que incluir el código fuente haciendo clic derecho sobre Archivos de código fuente/Agregar/Nuevo Elemento….
Le damos un nombre al fichero, por ejemplo, main.cpp.
En el nuevo fichero podemos incluir una ligera variante del código que propuse en el anterior post que os detallo a continuación:
#ifdef WIN32
#include <windows.h>
#endif
//include GLUT
#include <glut.h>
//set the macros for the window size
#define SIZEX 500
#define SIZEY 500
//initializing stuff
void init(void)
{
glDisable( GL_DEPTH_TEST ); //triangles have two sides
glDisable( GL_CULL_FACE ); //triangles have two sides
}
//Render one frame
void render(void)
{
//Clear the window and the depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//Render the triangle
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f ); //change vertex color
glVertex2d( -0.5f, -0.5f );
glColor3f(0.0f, 1.0f, 0.0f ); //change vertex color
glVertex2d( 0.5f, -0.5f );
glColor3f(0.0f, 0.0f, 1.0f ); //change vertex color
glVertex2d( 0.0f, 0.5f );
glEnd();
//Swap front and back buffer
glutSwapBuffers();
}
int main(int argc, char **argv)
{
//init all OpenGL stuff
glutInit(&argc, argv); //init GLUT
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); //init framebuffer properties
glutInitWindowSize(SIZEX, SIZEY); //init window dimensions
glutCreateWindow("Segmentation Fault"); //create window
//now that we have the window we can set the opengl state
init();
//set the callbacks
glutDisplayFunc(render); //render a frame
glutIdleFunc(render); //what to do when nothing happens
//start the GLUT mainloop (this function will be executed in a loop)
glutMainLoop();
return 0;
}
El resultado debería ser, al igual que en la anterior entrega, un triángulo colorido.
Os recuerdo, como siempre, que tenemos los comentarios para las dudas y problemas que os surjan. Salu2!
Fuentes
Javi Agenjo – http://www.tecn.upf.edu/~jagenjo/




![Visual c++ Hacemos clic en la carpeta y en el botón de los tres puntos [ . . . ]](http://www.segmentationfault.es/wp-content/2009/08/Imagen-6-300x230.png)








3 Responses and Counting...
Eymard
August 30th 2009Hola
Exelente post, a mi me sirvio mucho, ya que estoy iniciando con Visual C++. Gabi, ¿sabes de algún material para seguir aprendiendo Visual C++?, en particular me interesa el procesamiento de imágenes, ya sabes, fft, filtrado inverso, etc…
Gracias y felicidades.
Gabi García
Hola Eymard,
Me alegro que te haya sido útil y te agradezco tu comentario, siempre anima a seguir posteando cuando alguien dedica 5 minutos a agradecerlo.
Para aprender Visual C++ (el uso del IDE) hay infinidad de tutoriales que encontrarás por internet y nunca está de más echar un ojo al MSDN de Microsoft.
Si te interesa el tema de procesamiento de imagen yo he trabajado con la librería Magick++ (la librería de ImageMagick para C++) y es muy completa. De hecho hay un post introductorio que realicé hace algún tiempo.
Para los cálculos de Fourier y semejantes (FFT, DFT, IDFT…) he utilizado Octave/Matlab y también un programa llamado MegaWave muy apropiado para procesamiento de imagen.
Te dejo algunos enlaces por si te parecen interesantes:
http://megawave.cmla.ens-cachan.fr/
http://msdn.microsoft.com/es-es/library/e6w9eycd%28VS.80%29.aspx
http://www.gnu.org/software/octave/
http://www.imagemagick.org/Magick++/
Salu2!!!
mariza
muy bueno el post, yo recien empiezo en esto y tengo el visual c++ 6.0, instale el opengl 2(version) he tratado de correr algunos ejemplos pero me muestra error.