Menu

domingo, 29 de septiembre de 2013

ALTERNATIVA PARA DESARROLLO EN OPENGL (GLUT) EN WINDOWS 8 O SISTEMAS DE 64 BITS

No sé si solo me ha ocurrido a mí, o si esta es la mejor solución para los problemas que se presentan el desarrollo sobre la API de OPENGL en sistemas con Windows de 64 bits.

Por lo general utilizo Visual Studio 2012 para mis proyectos en C++, pero este compilador es muy restrictivo en cuanto el manejo de matrices sin longitudes constantes, lo cual puede convertirse en un problema. Otra opción es Dev C++ 4.9.9.2 que funciona bien en sistemas de 32 bits, pero no tiene soporte para x64 o Windows 8. Están también las versiones Bloodshed Dev C++ en las cuales son un lio colocar las librerías para que al final compile pero no se ejecute el programa.

Así que después de encontrarme con estos inconvenientes y sin querer cambiar de SO encontré a Code::Blocks es un entorno de desarrollo integrado libre y multiplataforma para el desarrollo de programas en lenguaje C y C++.

Instalación Code::Blocks:
  1. Se descarga de la página http://www.codeblocks.org/downloads/26#windows o en http://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/codeblocks-12.11mingw-setup.exe/download debe ser la versión MinGW que trae el compilador GNU GCC Compiler.
  2. Seguir los pasos de instalación.

Librerías OPENGL (GLUT)
  1. Se descargan de la página http://user.xmission.com/~nate/glut/glut-3.7.6-bin.zip
  2. Luego de descomprimirlas se colocan en las siguientes rutas:
    • Glut.h en C:\Program Files (x86)\CodeBlocks\MinGW\include\GL
    • Glut32.lib en C:\Program Files (x86)\CodeBlocks\MinGW\lib
    • Glut32.dll en C:\Program Files (x86)\CodeBlocks\MinGW\bin

Creación del Proyecto de OPENGL 

  1. Abrir Code::Blocks
  2. Entrar a la opción de menú File->New->Project, en la ventana se selecciona GLUT Project.
  3. Se siguen los pasos hasta llegar al que pide la ruta de las librerías de GLUT, se coloca la ruta C:\Program Files (x86)\CodeBlocks\MinGW.
  4. No olvidar siempre seleccionar el compilador GNU GCC Compiler e incluir la librería #include en el código.
  5. Si por algún motivo aparece el error: El programa no puede iniciarse porque falta glut32.dll
    Solo hay que agregar Glut32.dll en la ruta el proyecto  [Proyecto]/bin/[Debug y/o Release]/ y listo, ya se pueden romper la cabeza con OPENGL.



4 comentarios:

Unknown dijo...

Que tal amigo.
Seguí todos los pasos pero cuando corro el programa me abre un nuevo archivo de muchas lineas, parecen ser instrucciones de glut.
¿Cómo soluciono eso?

Unknown dijo...

Este es el programa que corro, lo compilo en el seven y si sirve pero en la lap no tengo 7 y no quiero bajar de version. Espero tus comentarios y gracias:


#include //archivo de cabecera OpenGL, glu, glut

//Rutina de inicializacion
void inicializa(void)
{ glClearcolor(1.0,0.0,0.0,0.0); //Color de fondo RGBA (A no interesa por ahora)
glMatrixMode(GL_PROJECTION); //Para el tipo de matriz a usar Proyeccion
gluOrtho2D(0,400,0,400); //coordenada x de 0 a 400 y coordenada y de 0 a 400 x incicial o, x final 400. Mundo grafico 0 x inicial, 400 x final
} // coordenadas donde estoy pintando.
//Rutina que pinta
void pinta(void){
glClear(GL_COLOR_BUFFER_BIT); //limpia la ventana de visualizacion PONER SIEMPRE ESTA LINEA SIRVE PARA LIMPIAR
glBegin(GL_POINTS); //pintamos dos puntos
glVertex2i(10,10);
glVertex2i(100,100);
glEnd();
glFlush(); //procesa todas las subrutina de OpenGL
}
//Rutina principal
int main(int argc,char **argv){
glutInitWindowSize(400,400); //tamaño de ventana de visualizacion reales ES EL TAMAÑO EN EL QUE ESTOY PINTANDO.
glutCreateWindow("Mi primer programa"); //crea la ventana de visualizacion PONER SIEMPRE EL NOMBRE
inicializa();
glutDisplayFunc(pinta); //pinta lo que ordene "pinta"
glutMainLoop(); //Espera ordenes
}

Anónimo dijo...

Muchísimas Gracias, necesitaba esta librería para la universidad y no conseguía instalarla en windows 8.1, de verdad, te lo agradezco mucho

Unknown dijo...

oye Sabes que es lo que pasa cuando marca undefined reference to glClearColor ? y para que es el archivo .def?