在 Visual C 中使用 GLUT 快捷版

发布于 2024-07-04 06:26:03 字数 99 浏览 8 评论 0原文

在 Visual C++ Express Edition 下使用GLUT(OpenGL Utility Toolkit)编译 OpenGL 应用程序的基本步骤是什么?

What are the basic steps to compile an OpenGL application using GLUT (OpenGL Utility Toolkit) under Visual C++ Express Edition?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沉睡月亮 2024-07-11 06:26:03
  1. 如果您没有 Visual C++ Express Edition (VCEE),请下载并安装 VCEE
  2. Visual C++ Express Edition 的默认安装是针对 .Net 平台构建的。 我们需要针对 Windows 平台进行构建,因为 .Net 尚未完全支持 OpenGL 和 GLUT。 为此,我们需要 Microsoft Platform SDK。 (如果您使用的是旧版本的 VCEE,请下载并安装 Microsoft 平台 SDK 需要配置为适用于 Windows 平台。所有这些说明均可用 此处。)
  3. 如果您没有 GLUT,请下载并解压缩 Nate Robin 的 GLUT 的 Windows 端口
  4. glut.h 添加到您的 Platform SDK/include/GL/ 目录
  5. 将项目与 glut.lib 链接。 (转到 VCEE 项目属性 -> 其他链接器目录,然后添加包含 glut.lib 的目录。
  6. glut.dll 添加到 < em>Windows/System32目录,让所有程序使用GLUT
    可以在运行时找到它。

您使用 GLUT 或 OpenGL 的程序现在应该在 Visual C++ Express Edition 下编译。

  1. If you don't have Visual C++ Express Edition (VCEE), download and install VCEE.
  2. The default install of Visual C++ Express Edition builds for the .Net platform. We'll need to build for the Windows platform since OpenGL and GLUT are not yet fully supported under .Net. For this we need the Microsoft Platform SDK. (If you're using an older version of VCEE, download and install the Microsoft Platform SDK. Visual C++ Express Edition will need to be configured to build for Windows platform. All these instructions are available here.)
  3. If you don't have GLUT, download and unzip Nate Robin's Windows port of GLUT.
  4. Add glut.h to your Platform SDK/include/GL/ directory
  5. Link the project with glut.lib. (Go to VCEE Project Properties -> Additional Linker Directories and add the directory which has glut.lib.
  6. Add glut.dll to the Windows/System32 directory, so that all programs using GLUT
    can find it at runtime.

Your program which uses GLUT or OpenGL should compile under Visual C++ Express Edition now.

奈何桥上唱咆哮 2024-07-11 06:26:03

Nate Robin 网站上的 GLUT 端口来自 2001 年,与更新的 Visual Studio 版本(.NET 2003 及更高版本)存在一些不兼容性。 这种不兼容性表现为重新定义 exit() 时出现错误。 如果您看到此错误,有两种可能的解决方案:

  1. glut.h 中的 exit() 原型替换为 stdlib.h 中的原型> 使它们匹配。 这可能是最好的解决方案。
  2. 一个更简单的解决方案是在程序中#include之前#define GLUT_DISABLE_ATEXIT_HACK

最初在 TAMU 帮助台网站上看到了这个建议。)

(应有的信用:我 自从 .NET 2003 发布以来,我自己一直在使用方法#1,并且在 VC++ 2003、VC++ 2005 和 VC++ 2008 中使用了相同的修改后的 glut.h。

这是我使用的 glut.h 的差异它执行 #1(但在适当的 #ifdef 块 中,以便它仍然适用于旧版本的 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. */

The GLUT port on Nate Robin's site is from 2001 and has some incompatibilities with versions of Visual Studio more recent than that (.NET 2003 and up). The incompatibility manifests itself as errors about redefinition of exit(). If you see this error, there are two possible solutions:

  1. Replace the exit() prototype in glut.h with the one in your stdlib.h so that they match. This is probably the best solution.
  2. An easier solution is to #define GLUT_DISABLE_ATEXIT_HACK before you #include <gl/glut.h> in your program.

(Due credit: I originally saw this advice on the TAMU help desk website.)

I've been using approach #1 myself since .NET 2003 came out, and have used the same modified glut.h with VC++ 2003, VC++ 2005 and VC++ 2008.

Here's the diff for the glut.h I use which does #1 (but in appropriate #ifdef blocks so that it still works with older versions of 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. */
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文