Usando GLUT con Visual C++ Express Edition
-
08-06-2019 - |
Pregunta
¿Cuáles son los pasos básicos para compilar una aplicación OpenGL usando GLUT (Kit de herramientas de utilidad OpenGL) en Visual C++ Express Edition?
Solución
- Si no tiene Visual C++ Express Edition (VCEE), descargue e instale VCEE.
- La instalación predeterminada de las compilaciones de Visual C++ Express Edition para la plataforma .Net.Necesitaremos compilar para la plataforma Windows, ya que OpenGL y GLUT aún no son totalmente compatibles con .Net.Para ello necesitamos el SDK de la plataforma Microsoft.(Si está utilizando una versión anterior de VCEE, descargue e instale el SDK de plataforma Microsoft.Será necesario configurar Visual C++ Express Edition para compilarlo para la plataforma Windows.Todas estas instrucciones están disponibles. aquí.)
- Si no tienes GLUT, descarga y descomprime Nate Robin's Puerto de Windows de GLUT.
- Agregar glut.h para usted SDK de plataforma/incluye/GL/ directorio
- Vincular el proyecto con glut.lib.(Ir a VCEE Propiedades del proyecto -> Directorios de enlazadores adicionales y agregue el directorio que tiene glut.lib.
- Agregar glut.dll hacia Windows/Sistema32 Directorio, para que todos los programas que usan GLUT pueden encontrarlo en tiempo de ejecución.
Su programa que usa GLUT u OpenGL debería compilarse ahora en Visual C++ Express Edition.
Otros consejos
El port GLUT en el sitio de Nate Robin es de 2001 y tiene algunas incompatibilidades con versiones de Visual Studio más recientes (.NET 2003 y posteriores).La incompatibilidad se manifiesta en errores sobre la redefinición de exit()
.Si ve este error, hay dos posibles soluciones:
- Reemplace la
exit()
prototipo englut.h
con el que esta en tustdlib.h
para que coincidan.Esta es probablemente la mejor solución. - Una solución más fácil es
#define GLUT_DISABLE_ATEXIT_HACK
antes de ti#include <gl/glut.h>
en su programa.
(Crédito adeudado:Originalmente vi este consejo en el Sitio web de la mesa de ayuda de TAMU.)
Yo mismo he estado usando el enfoque n.° 1 desde que salió .NET 2003 y he usado el mismo método modificado. glut.h
con VC++ 2003, VC++ 2005 y VC++ 2008.
Aquí está la diferencia para glut.h que uso y que hace el n.° 1 (pero en el modo apropiado). #ifdef blocks
para que siga funcionando con versiones anteriores de Visual Studio):
--- c:\naterobbins\glut.h 2000-12-13 00:22:52.000000000 +0900
+++ c:\updated\glut.h 2006-05-23 11:06:10.000000000 +0900
@@ -143,7 +143,12 @@
#if defined(_WIN32)
# ifndef GLUT_BUILDING_LIB
-extern _CRTIMP void __cdecl exit(int);
+/* extern _CRTIMP void __cdecl exit(int); /* Changed for .NET */
+# if _MSC_VER >= 1200
+extern _CRTIMP __declspec(noreturn) void __cdecl exit(int);
+# else
+extern _CRTIMP void __cdecl exit(int);
+# endif
# endif
#else
/* non-Win32 case. */