OpenGL的GUI好吗?[关闭]


65

我开始使用Superbible和我从基本图形中学到的知识来学习Free技巧来学习FreeGLUT的技能。

为了从这种经验中获得更多收益,我想集成一个GUI来覆盖FreeGLUT所使用的一个,现在的问题是:这可能吗?我应该使用哪个库?

该库的一些特征:

  • 开源的
  • 多平台(Linux和Windows)
  • C / C ++

如果您有任何其他建议,请随时将其与您的答案一起发布给我。


2
OpenGL从何时开始默认使用GUI?:L
共产党鸭子

意思是说我正在使用的库,又名FreeGLUT。
克里斯蒂娜2010年

增加了赏金-附加要求:必须具有跨平台文件io对话框。
Jari Komppa

1
在sourceforge上,小文件对话框具有多个模式函数调用。这是一个简单的C C ++跨平台文件,可添加到您的项目中。
tinyfiledialogs 2016年

Answers:


33

我还没有尝试过,但这看起来很有趣:

火箭弹

编辑:由于您需要渲染上下文,因此我建议使用SFML或SDL 1.3。


事实上,它确实看起来有趣

2
我使用libRocket,这绝对是太棒了!HTML的痛苦也存在于库中,但是随着它的鬼混,您几乎可以绕开一切:D
Grimshaw

似乎已停滞(几年没有更新)。此外,浏览文档并不能很好地了解其实际情况。这些文档通常太底层了。
Jari Komppa

据我所知,也没有Fedora或Ubuntu的官方软件包。
ilent2 2014年

您还可以尝试使用GLFW创建渲染上下文

19

疯狂的Eddie的GUI(CEGUI)很流行,您可以选择现有的渲染器后端之一,也可以编写自己的目标,以使用所需的任何OpenGL支持的API。它是开源,多平台和C ++。但是,它重视一致性,这对于游戏来说并不总是一个好的UI原则,因为游戏可能恰好在一个地方使用了数十个自定义控件。

最近流行的模式是即时模式GUI(IMGUI),它是一种“无GUI库”。它具有优缺点-非常简单,但是优化起来很棘手,而且我还没有看到用于高级控件(如组合框或树状视图)的非常好的IMGUI模型。我也没有看到IMGUI窗口系统的良好实现(我花了一些时间编写一个我从未满意的窗口)-但是,它对于简单的HUD元素非常好,并且易于执行一次性控制。


2
我最近第一次接触IMGUI,觉得那是一个很大的倒退。就像您说的那样,这对于简单的HUD或静态工具栏非常有用,但对于任何动态,令人讨厌的工作,让艺术家或设计师创建布局,并迫使您将表示和逻辑代码集中在一个地方,都非常糟糕。
Kylotan'2

11
-1。我感觉到CEGUI之所以流行是因为它存在并且人们将其作为默认的goto(像这样)。使用它时,我发现它笨拙且笨拙。
bobobobo

@bobobobo同意。之所以受欢迎是因为它存在。它是食人魔的“官方” gui(无论这意味着什么),但我发现编写代码非常麻烦。同样,RAD gui生成器也存在漏洞(仍在开发中)。
cheshirekow 2012年

1
亲爱的imgui似乎是多功能IMGUI的一个很好的例子。我还没有尝试过,但是看起来很有希望。
legends2k

13

我最近偶然发现了格温。这是由Gary's Mod的作者编写的GUI库。它是麻省理工学院许可的,任何优秀的游戏库都应该具有。
Gwen徽标
图书馆有很多事情要做。


  • 它显示了大型小部件集Gwen已经开发了几年。
  • 轻松进行后端渲染器自定义
    这是一个很大的功能。该库带有重建的OpenGL渲染器。但是制作渲染器非常简单,以至于您可能想要构建特定于游戏渲染系统的渲染器。

  • Gwen的填补程度似乎较低,似乎是游戏GUI的不足。没有XML,没有HTML渲染器,只有简单的C ++。Gwen也不附带图像加载器。它期望渲染器后端处理加载。我喜欢此功能,因为它可使库保持较小,并且游戏的渲染系统已经可以管理纹理。
  • 皮肤化
    不是里程碑中的第一件事,但最终您需要根据游戏自定义GUI。
  • C ++外观
    我不是Web开发人员,并且发现以html css为中心的GUI很困难。
  • 输入注入
    这对于游戏来说非常重要。使用要拥有输入轮询的GUI系统总是很痛苦。
  • 跨平台
    该库致力于跨平台,但是他们承认您可能会在使用较少的平台上发现问题。
  • 积极开发
    此外,它比CEGUI或MyGUI小得多,因此对其进行黑客入侵或提交补丁程序更为实用。

但是,这有缺点:

  • 没有一页文档。甚至没有网站了,只有github仓库。
  • 打包的渲染器缺乏可移植性,因此如果需要,您需要编写自己的渲染器。
  • ???

2
没有足够的文档,还没有可移植性(尚未发布),opengl后端未完成等。无法从在线资料中确定它是否具有文件io对话框(或与此相关的所有对话框)。
Jari Komppa

我同意缺少该文档。核心库是跨平台的。但是,其他平台缺少渲染器和输入系统。对我来说,这不是问题,因为我构建了适合我的渲染系统的渲染器。
deft_code 2011年

1
没有xaml / html / css并不是肯定的优点。这就是这些东西的目的,并且它们比C ++更好。
user441521'4

7

抱歉,您的回复很晚,但是您可能想看看一个称为GG的OpenGL UI框架。GG是作为FreeOrion项目的一部分开发的,并包含在其SVN信息库(和可下载的SDK)中。似乎能力很强。我在下面提供了一个屏幕截图;您可以单击图像查看完整版本。

FreeOrion基于GG的UI的屏幕截图


看起来GG已移至sourceforge上的单独项目gigi。
deft_code 2010年

不会令我惊讶。他们有意将其与FreeOrion分离。
Mike Strobel,2010年

我只是花了整整一个晚上,确实需要CMake文件。我喜欢外观,我不喜欢它使用Boost。
knight666

GG可以在这里找到:gigi.sourceforge.net
MichaelHouse

祝您好运,让它能够在Windows下建立。
3Dave



3

我一直在摆弄QuickGUIMyGUI。它们都是最近删除了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脱颖而出。


我尝试过MyGUI,它确实非常肿,如果您想节省空间,则不建议您这样做。仍在努力使QuickGUI正常工作。
克里斯蒂娜

1
我都尝试过两种,都使用CEGUI的时间最长,但是不提很多文本的速度太慢是绝对可怕的。我最近切换到MyGUI,并且运行良好。他们的布局和皮肤编辑器非常整洁。我不确定the肿,相比之下,我认为CEGUI肿得多。MyGUI中的一些做法很奇怪(例如,+ =运算符用于分配代表,并且转换也以一种奇怪的方式进行-作者正在积极地开发它并听取很棒的建议),但是总的来说,我更喜欢它CEGUI。
Samaursa 2011年

@Samaursa + =运算符意味着您可以添加多个委托。
Ocelot

3

我会推荐QT,因为它是C ++的跨平台,并且您可以获得带有LGPL许可证的开源版本。它也易于使用,并且具有许多可以使用的预制组件。


6
不要以为这是基于OpenGL的UI。
DeadMG

它不是说它应该基于OpenGL,还是我完全误解了这个问题?我读了他的书,因为他不想接手freeGLUT,而QT却无能为力。
martiert 2011年

我要第二!我使用qt,它几乎具有启动时所需的一切。多年来,它在非常好的支持下变得非常稳定。他们也有一个叫做胶子的游戏框架。
brainydexter 2011年

8
QT和框架的问题通常是它们控制主循环。通常这并不适合自己玩游戏。
deft_code 2011年

1
如果用户界面不是OpenGL,则建议使用基于事件的用户界面以及用于游戏+图形的事件和计时器来摆脱主循环。无论如何,我使用过QT,但我不建议这样做。
Danny Varod

3

创作者可能会这样说,但我发现GLFW在创建跨平台GUI框架方面很棒。GLFW开发人员一直在进行有关GLFW的问题,但它们处理GUI。但是,它确实可以很好地处理简单的图形,事件和鼠标/键盘/操纵杆任务,并且干净,易于携带。

对我而言,GLFW的好处是它很小,不需要系统特定的代码,不需要GLUT 并且维护良好。到目前为止,已稳定可用于OpenGL 4.1项目。与SDL之类的东西相比,我喜欢微小的开销,并且编写GUI处理程序类很容易。

另外,看看FLTK。它可以用于各种事物,并且用途非常简单。它确实用于应用程序构建,但是完全能够处理3D对象,并且基于OpenGL构建。很小巧,得到了很好的支持,虽然我看不出有很多人在游戏设计级别上创建自定义界面,但有些似乎效果很好。


1
glfw不仅是在桌面平台上抽象化窗口代码的库吗?如何使用它创建图形?

1
正如我所说的,@ GabrieleVierti也可以处理跨平台加速输入。除此之外,它更特别地帮助您获得OpenGL或Vulkan准系统的上下文并处理许多样板。在上下文中,我只是在屏幕上实现了热点的直方图金字塔,并将其用作click / type事件处理程序的主要部分。然后将控件关联到金字塔上的某个位置。用于设置实际图形的普通绘图命令。任何适用于Web的UI套件都可以正常工作或使用特定领域的艺术品
Garet Claborn

仅添加预制的gui框架(如亲爱的ImGui)会容易得多

1
ImGui在即时模式下运行,因此您将失去硬件加速。我提到的东西无论如何都必须跟踪游戏渲染,因此添加一些2D叠加层并不是主要考虑因素。我可以看到这对于某些项目来说将是一件麻烦事
Garet Claborn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.