我开始使用Superbible和我从基本图形中学到的知识来学习Free技巧来学习FreeGLUT的技能。
为了从这种经验中获得更多收益,我想集成一个GUI来覆盖FreeGLUT所使用的一个,现在的问题是:这可能吗?我应该使用哪个库?
该库的一些特征:
- 开源的
- 多平台(Linux和Windows)
- C / C ++
如果您有任何其他建议,请随时将其与您的答案一起发布给我。
我开始使用Superbible和我从基本图形中学到的知识来学习Free技巧来学习FreeGLUT的技能。
为了从这种经验中获得更多收益,我想集成一个GUI来覆盖FreeGLUT所使用的一个,现在的问题是:这可能吗?我应该使用哪个库?
该库的一些特征:
如果您有任何其他建议,请随时将其与您的答案一起发布给我。
Answers:
疯狂的Eddie的GUI(CEGUI)很流行,您可以选择现有的渲染器后端之一,也可以编写自己的目标,以使用所需的任何OpenGL支持的API。它是开源,多平台和C ++。但是,它重视一致性,这对于游戏来说并不总是一个好的UI原则,因为游戏可能恰好在一个地方使用了数十个自定义控件。
最近流行的模式是即时模式GUI(IMGUI),它是一种“无GUI库”。它具有优缺点-非常简单,但是优化起来很棘手,而且我还没有看到用于高级控件(如组合框或树状视图)的非常好的IMGUI模型。我也没有看到IMGUI窗口系统的良好实现(我花了一些时间编写一个我从未满意的窗口)-但是,它对于简单的HUD元素非常好,并且易于执行一次性控制。
我最近偶然发现了格温。这是由Gary's Mod的作者编写的GUI库。它是麻省理工学院许可的,任何优秀的游戏库都应该具有。
图书馆有很多事情要做。
但是,这有缺点:
抱歉,您的回复很晚,但是您可能想看看一个称为GG的OpenGL UI框架。GG是作为FreeOrion项目的一部分开发的,并包含在其SVN信息库(和可下载的SDK)中。似乎能力很强。我在下面提供了一个屏幕截图;您可以单击图像查看完整版本。
看看AntTweakBar,它由Cinder使用。还在为Cinder开发一个新的GUI库:SimpleGUI。
如果要使用HTML + CSS,则可以使用Awesomium(由Wolfire Games在其Overgrowth游戏中使用)和免费的替代软件Berkelium。
我一直在摆弄QuickGUI和MyGUI。它们都是最近删除了ogre要求的Ogre GUI库。我也没有太多的经验,但是看起来我会坚持使用QuickGUI,因为它更小,更简单。
我不确定QuickGUI Wiki是否已更新为指向最新的Ogre-free版本。这是最新版本。
http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip
仓库中已经看到了一些跨平台的更新,因此最好直接使用svn。
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform
用户名:匿名
密码:QuickGUI
最后是有关如何添加不同渲染后端的简短Wiki。 http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial
MyGUI似乎具有更多功能,但会变得肿。老实说,如果不是简单性的要求,CEGUI会让MyGUI脱颖而出。
我会推荐QT,因为它是C ++的跨平台,并且您可以获得带有LGPL许可证的开源版本。它也易于使用,并且具有许多可以使用的预制组件。
创作者可能会这样说,但我发现GLFW在创建跨平台GUI框架方面很棒。GLFW开发人员一直在进行有关GLFW的问题,但它们不处理GUI。但是,它确实可以很好地处理简单的图形,事件和鼠标/键盘/操纵杆任务,并且干净,易于携带。
对我而言,GLFW的好处是它很小,不需要系统特定的代码,不需要GLUT ,并且维护良好。到目前为止,已稳定可用于OpenGL 4.1项目。与SDL之类的东西相比,我喜欢微小的开销,并且编写GUI处理程序类很容易。
另外,看看FLTK。它可以用于各种事物,并且用途非常简单。它确实用于应用程序构建,但是完全能够处理3D对象,并且基于OpenGL构建。很小巧,得到了很好的支持,虽然我看不出有很多人在游戏设计级别上创建自定义界面,但有些似乎效果很好。