2009年OpenGL窗口库

时间:2009-08-10 00:30:53

标签: c++ opengl

尝试决定创建窗口并为我的OpenGL应用程序捕获用户输入的库,但是有太多的选择:

GLUT简直过时了。我喜欢GLFW,但似乎你不能在显示它之前设置窗口位置(我希望它居中,这是多么要问?)所以你看到它出现然后转移,这困扰我。加上发展似乎已经停止了。 SFML有一些很好的功能,但它使用事件轮询而不是我更喜欢解耦的回调。我认为我不需要FLTK的所有GUI功能。 SDL很慢(似乎没有利用GPU)。其他3我不太了解(FreeGLUT,OpenGLUT,OGLWFW)。那么邪恶中哪一个较小?还有其他我没有听说过吗?

我只是想制作一个简单的2D游戏。我对OpenGL非常熟悉,我并不真的需要绘制例程,但如果正确实现,我可能不会抱怨其他可能有用的函数。

6 个答案:

答案 0 :(得分:8)

SDL允许您创建加速的OpenGL上下文(取决于驱动程序/硬件支持)。

我知道你标记为C ++,但是 pygame (python)是一个很棒的用于创建2D游戏的库,它也支持OpenGL上下文。 Pygame建立在SDL上。

Clutter是一个新的基于OpenGL的GUI库,包含Perl,Python,C#,C ++,Vala和Ruby的绑定。我自己没有用过它。来自网站:

  

Clutter使用OpenGL(可选)   OpenGL ES用于移动和   嵌入式平台)用于渲染但是   使用API​​隐藏底层证券   来自开发人员的GL复杂性。该   Clutter API旨在轻松实现   使用,高效,灵活。

答案 1 :(得分:7)

GLUT和其他GLUT替代品不应用于任何生产应用。它们很适合组合一个快速的演示应用程序或尝试一些东西,但不仅仅是那个。

如果您正在尝试制作OpenGL游戏,我建议使用SDL。它更侧重于游戏需求。它绝对可以与OpenGL一起使用。关于如何使用SDL初始化OpenGL的简短谷歌“SDL OpenGL”出现了this link。启用OpenGL还应该启用GPU的硬件渲染。

Qt是一个合理的选择,但如果你想在一个更大的桌面应用程序(想想3D建模,CAD / CAM,医学可视化等)中嵌入OpenGL,你需要访问UI的标准操作系统小部件,这样做会更好。

答案 2 :(得分:6)

我会去Qt。好的通用库+ opengl支持

答案 3 :(得分:3)

IF  "learning c++ part of what you're trying to achieve":
then
IF  "you only want to learn OpenGL with a fullscreen mode":
  USE GLUT //Because it's VERY VERY simple. You can get set up VERY quick
ELSE:
  USE QT //Great library, has many many things that will help you. It is portable, it has a nice API
ENDIF

IF "you don't need C++":
then
   USE Python //I recommend it, it is fast, no long link times, good api, omg I love this language

<强>背景

我还尝试过一次简单的2D游戏,我开始使用C ++和NeHe。我对OpenGL和C ++一无所知(有Java背景)。语言超出了我,OpenGL也是如此。所以这是一个非常艰难的学习曲线。

我不建议采用这种方式,因为您可以使用动态语言(例如Python)获得更快的结果。所以几年后我开始学习python。我可以更快地使用“旋转立方体”。

答案 4 :(得分:3)

我们在2008年使用ClanLib 0.8和在C ++课程中使用ClanLib 2.1获得了相当不错的经验。自SDL转换以来,学生的生产力(以项目工作质量衡量)大大提高。但是,需要注意的是2.1仍然非常不完整,并且肯定会遇到尚未实现的功能。

有几个小组使用了Irrlicht(3D引擎),效果很好。

SFML看起来很有希望,但我还没有机会尝试它。

正如其他人所说,GLUT并不适合任何严肃的事情。提到的其他库是比游戏开发库更多的GUI工具包。

答案 5 :(得分:1)

最近与作者的通信,GLFW的开发已经停止。