Сведения о вопросе

CPdeveloper

09:44, 4th August, 2020

Теги

Использование GLUT с Visual C++ Express Edition

Просмотров: 514   Ответов: 2

Каковы основные шаги для компиляции приложения OpenGL с использованием GLUT (OpenGL Utility Toolkit) в Visual C++ Express Edition?



  Сведения об ответе

padenie

06:28, 14th August, 2020

  1. Если у вас нет Visual C++ Express Edition (VCEE), загрузите и установите VCEE .
  2. Установка по умолчанию Visual C++ Express Edition строится для платформы .Net. Нам нужно будет построить для платформы Windows, так как OpenGL и GLUT еще не полностью поддерживаются в файле .Net. для этого нам нужна платформа Microsoft SDK. (Если вы используете более старую версию VCEE, загрузите и установите платформу Microsoft SDK . Визуальный C++, Экспресс-выпуск должен быть настроен, чтобы построить на платформе Windows. Все эти инструкции доступны здесь .)
  3. Если у вас нет GLUT, загрузите и распакуйте порт Windows Нейта Робина GLUT .
  4. Добавьте glut.h в вашу платформу SDK/include/GL / каталог
  5. Свяжите проект с glut.lib . (Перейдите в свойства проекта VCEE - > дополнительные каталоги компоновщика и добавьте каталог, который имеет glut.lib .
  6. Добавьте glut.dll в каталог Windows/System32 , чтобы все программы, использующие GLUT может найти его во время выполнения.

Теперь ваша программа, которая использует GLUT или OpenGL, должна компилироваться под Visual C++ Express Edition.


  Сведения об ответе

+-*/

22:03, 12th August, 2020

Порт GLUT на сайте Nate Robin был создан в 2001 году и имеет некоторые несовместимости с более поздними версиями Visual Studio (.NET 2003 и выше). Несовместимость проявляется в виде ошибок при переопределении exit() . Если вы видите эту ошибку, есть два возможных решения:

  1. Замените прототип exit() в glut.h на прототип в вашем stdlib.h , чтобы они совпали. Это, пожалуй, самое лучшее решение.
  2. Более простое решение-это #define GLUT_DISABLE_ATEXIT_HACK перед вами #include <gl/glut.h> в вашей программе.

(Должное внимание: я изначально видел этот совет на веб- сайте службы поддержки TAMU .)

Я сам использую подход #1 с тех пор, как вышел .NET 2003, и использовал тот же модифицированный glut.h с VC++ 2003, VC++ 2005 и VC++ 2008.

Вот diff для glut.h я использую, который делает #1 (но в соответствующем #ifdef blocks , так что он все еще работает с более старыми версиями 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. */


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться