【问题标题】:Getting OpenGL setup on Windows (mingw32?)在 Windows 上设置 OpenGL(mingw32?)
【发布时间】:2011-04-19 08:04:12
【问题描述】:

编译器是mingw32。语言是 C99。操作系统是windows。显卡是Nvidia 260GTX

我可以链接到 opengl32/glu32 并针对它进行构建,但 OpenGL 3.x 中的任何内容都不包括在内...事实上,我会说它可能缺少 2.x 扩展!

GLEW 和 GLM 都是 C++,不能直接使用 C。Glee 没有任何 mingw32 二进制文件(并且在我的系统上构建不干净)。

我正在使用 SDL,它有一些 OpenGL 函数 (??),但同样看起来已经过时了。

我只是不明白为什么让 C/OpenGL 在 Windows 上工作如此困难的根本问题?为何如此独特?为什么 Khronos 不提供 SDK/库/头文件等?

我通过 Java/lwjgl 执行 OpenGL,并且没有花时间设置它并让它编译/运行。

【问题讨论】:

  • 是什么让您认为 GLEW 不能与 C 一起使用?它应该工作得很好。你试过了吗?你有什么错误吗?
  • 谢谢,但是当我尝试与 GLEX 链接并启用 -std=c99 -ansi 时,我遇到了一堆编译器/链接错误。也没有 mingw32 构建;只有 MSVC。
  • GLEW 和 GLEE 都有 mingw32 包。在 ANSI C99 中都不能完全编译。

标签: c opengl mingw32


【解决方案1】:

在 Windows 中,任何高于 OpenGL-1.1 的内容都只能通过扩展访问。这就是它的设计方式和运行方式。 GLEW 与纯 C 完美配合(如果我没记错的话,GLEW 是用纯 C 编写的)。

Khronos 无法提供 SDK,因为实际提供 OpenGL API 是留给操作系统供应商的任务,而在 Windows 中,需要图形驱动程序来提供实现。就 Windows 而言,微软在几年前离开了 ARB,转而支持其专有的 Direct3D 技术。曾经有过激烈的争论,什么是更好的 API,但现在全世界,除了微软都选择了 OpenGL,这次争论已经结束了。

无论如何,如果您想让事情变得非常简单,请使用 GLFW http://glfw.org,而不是 GLUT、SDL 等上下文设置,如果你要求的话(你仍然需要一些扩展包装器来在你自己的代码中使用扩展——但是创建一个纯 OpenGL-3 上下文需要一些代理上下文,使用它加载一些扩展并使用获得的函数来创建一个真正的OpenGL-3 上下文。只是为了澄清)。

【讨论】:

  • 来自 GLFW:2.13 为什么你的 gl.h 没有我需要的功能? GLFW 不提供任何版本的 gl.h 或 glu.h。 glfw.h 头文件包含您的开发环境中已经存在的版本。但是,如果您使用的是 Windows,则如果不使用扩展,您将无法获得比 OpenGL 1.2 更新的任何东西。由于 GLFW 中的扩展管理非常初级,我们建议您使用专用的扩展加载库,例如 GLEW 或 GLee。
  • 为什么选择 GLFW 而不是 SDL?他们自己的网站说他们不支持 windows 上 1.1 以上的 GL 扩展。
  • GLEW 或 GLEE 都没有 MinGW32 版本,也没有在 ANSI C99 中干净地编译。
  • 我在编译 GLEW 时从来没有遇到过问题,但是如果在启用 C99 功能的情况下构建 GLEW 时遇到问题,那么只需在 C90 模式下构建库即可。函数调用约定都是一样的,没有二进制不兼容。您还可以告诉我 GLFW 在哪里声明他们只会在 Windows 上支持 OpenGL-1.1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 2013-06-16
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
相关资源
最近更新 更多