2009-08-10 68 views
6

试图在库决定创建一个窗口和捕捉用户输入我的OpenGL应用程序,但也有只是太多的选择:的OpenGL窗口化图书馆2009年

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

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

+0

OGLWFW目前似乎只是Win32。该网站称Linux/Mac支持是“计划中的”。您还没有说过,授权或跨平台支持是否是一个问题 - 如果是,您可能需要记下这一点。 – greyfade 2009-08-10 03:32:30

+0

哦。我一定已经掩饰了这一点。跨平台很不错...特别是因为我现在正在Ubuntu上开发。许可证只是一个小问题,因为我似乎从来没有完成任何事情......我从来没有达到能够销售它的程度。 – mpen 2009-08-10 04:03:02

回答

6

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

+0

对......忘了Qt。陡峭的学习曲线,不是吗?之前尝试过使用它,完全让我困惑。 – mpen 2009-08-10 00:52:22

+0

Hrm ......至少它所附带的编辑是(困惑)。NetBeans 6.8似乎对Qt有一定程度的支持,所以让一个简单的应用程序启动并不是那么糟糕。 – mpen 2009-08-10 01:11:52

+0

我在Windows上使用Qt和Visual Studio,并在* nix框上使用Vim/make。它有非常好的文档和干净的API。我认为有一些教程可以将它与Eclipse/NetBeans /等IDE一起使用。对他们来说就是谷歌 – 2009-08-10 01:34:09

8

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

我知道你标记为C++,但是pygame(蟒蛇)是用于创建2D游戏,同时也支持OpenGL上下文一个伟大的图书馆。 Pygame建立在SDL之上。

Clutter是一种新的基于OpenGL的GUI库以绑定为Perl,Python,C#,C++,伐拉和Ruby。我自己并没有使用它。从网站:

杂波使用OpenGL(和可选 的OpenGL ES在移动和 嵌入式平台使用)进行渲染,但 与隐藏了开发商的潜在 GL复杂的API。 Clutter API旨在易于 的使用,高效且灵活。

+0

SDL仍然是C-esque(需要清理)并使用事件轮询而不是回调,并且与OpenGL似乎没有很好的集成(需要使用SDL包装函数?)。 – mpen 2009-08-10 00:55:01

+0

一旦你在pygame或SDL中设置了OpenGL上下文,你就可以使用任何你想要的OpenGL。我有一个基本上使用SDL进行窗口和事件轮询的OpenGL应用程序,以及用于图形的OpenGL。 – 2009-08-10 01:09:39

+0

呃,是的......我并不是说它不起作用,只是要更多的说服力去击败其他图书馆。 – mpen 2009-08-10 01:13:16

7

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

如果您正在尝试制作OpenGL游戏,我推荐使用SDL。它更专注于游戏需求。它绝对可以与OpenGL一起使用。关于如何使用SDL初始化OpenGL,“SDL OpenGL”简要的谷歌搜索结果为this link。启用OpenGL也应该启用GPU的硬件渲染。

Qt是一个合理的选择,但是如果您想要将OpenGL嵌入到更大的桌面应用程序(认为3D建模,CAD/CAM,医学可视化等)中,那么您需要访问UI的标准操作系统窗口小部件。

+0

是啊......但Qt似乎也更加现代化和精心设计!我的游戏将有一个编辑器......我*可以*使用这些额外的小部件:p我将考虑将来的项目使用SDL。 – mpen 2009-08-11 17:11:20

1

与作者在近期的核心协议中,OGLWFW的开发已停止。

+0

很高兴知道。他们似乎都快死了......现在,你应该去参加一个专业开发的大型框架。 – mpen 2009-12-19 02:56:31

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。我可以得到“旋转立方体”工作得更快。

+1

那么我个人已经知道C++和OpenGL,所以这不是一个真正的问题。我只需要一个跨平台的窗口API。所有其他花絮在Qt上都很不错;) – mpen 2009-12-19 02:55:36

3

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

一些团队使用Irrlicht(3D引擎),效果很好。

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

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