Usando GLUT com Visual C++ Express Edition
-
08-06-2019 - |
Pergunta
Quais são as etapas básicas para compilar um aplicativo OpenGL usando GLUT (kit de ferramentas de utilitário OpenGL) no Visual C++ Express Edition?
Solução
- Se você não tiver o Visual C++ Express Edition (VCEE), baixe e instale VCEE.
- A instalação padrão de compilações do Visual C++ Express Edition para a plataforma .Net.Precisaremos construir para a plataforma Windows, já que OpenGL e GLUT ainda não são totalmente suportados em .Net.Para isso precisamos do SDK da plataforma Microsoft.(Se você estiver usando uma versão mais antiga do VCEE, baixe e instale o SDK da plataforma Microsoft.O Visual C++ Express Edition precisará ser configurado para compilar para a plataforma Windows.Todas essas instruções estão disponíveis aqui.)
- Se você não tem GLUT, baixe e descompacte o Nate Robin's Porta Windows do GLUT.
- Adicionar glut.h para o seu Plataforma SDK/include/GL/ diretório
- Vincule o projeto com glut.lib.(Vá para VCEE Propriedades do projeto -> Diretórios adicionais do vinculador e adicione o diretório que contém glut.lib.
- Adicionar glut.dll para o Windows/Sistema32 diretório, para que todos os programas que usam GLUT pode encontrá-lo em tempo de execução.
Seu programa que usa GLUT ou OpenGL deve ser compilado no Visual C++ Express Edition agora.
Outras dicas
A porta GLUT no site de Nate Robin é de 2001 e tem algumas incompatibilidades com versões do Visual Studio mais recentes que essa (.NET 2003 e superior).A incompatibilidade se manifesta como erros sobre a redefinição de exit()
.Se você vir esse erro, há duas soluções possíveis:
- Substitua o
exit()
protótipo emglut.h
com aquele em seustdlib.h
para que eles combinem.Esta é provavelmente a melhor solução. - Uma solução mais fácil é
#define GLUT_DISABLE_ATEXIT_HACK
antes de você#include <gl/glut.h>
em seu programa.
(Devido crédito:Eu originalmente vi este conselho no Site de suporte técnico da TAMU.)
Eu mesmo tenho usado a abordagem nº 1 desde o lançamento do .NET 2003 e usei a mesma abordagem modificada glut.h
com VC++ 2003, VC++ 2005 e VC++ 2008.
Aqui está a diferença para o glut.h que eu uso, que faz o número 1 (mas no apropriado #ifdef blocks
para que ainda funcione com versões mais antigas do 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. */