Qt或wxWidgets

Qt或wxWidgets,qt,opengl,wxwidgets,gtk,lgpl,Qt,Opengl,Wxwidgets,Gtk,Lgpl,我要开始做一个新项目。这是一个使用OpenGL for Windows、Linux和Mac OS X的3D游戏。我需要一个用于GUI、窗口和处理输入的库。最后我有3个选择Qt、WxWidgets和GTK+。所有这些都在LGPL许可下 1-LGPL是否允许使用这些库来制作专有应用程序 2-这3个应用程序中哪一个最适合我?1-是的,前提是您的项目不需要更改库本身 2-Istrongrecqt用于新的窗口应用程序,如果没有其他原因的话,就是它有优秀的文档(虽然还有很多其他的赢家,但它很快就会变得主观)

我要开始做一个新项目。这是一个使用OpenGL for Windows、Linux和Mac OS X的3D游戏。我需要一个用于GUI、窗口和处理输入的库。最后我有3个选择Qt、WxWidgets和GTK+。所有这些都在LGPL许可下

1-LGPL是否允许使用这些库来制作专有应用程序


2-这3个应用程序中哪一个最适合我?

1-是的,前提是您的项目不需要更改库本身

2-Istrongrecqt用于新的窗口应用程序,如果没有其他原因的话,就是它有优秀的文档(虽然还有很多其他的赢家,但它很快就会变得主观)。GTK和WxWidgets都会让你浪费精力去思考那些你真的不应该去想的事情。Qt更容易a)定制,b)当你不关心定制时忽略

虽然对于3D的东西,你可能想看看成熟的引擎,比如,哦,irlicht,Ogre3D或者其他一些引擎

  • 是的,只要不静态链接到它们(即:将它们用作DLL)。尽管wxWidgets允许您静态链接,而不会成为GPL'd

  • 以上都没有。如果你正在制作一个3D游戏,那么这些都不能满足你的需求。游戏对GUI的需求与典型桌面应用程序对GUI的需求大不相同。在游戏中,您希望特定的GUI元素与特定的艺术方向一致,而不是与桌面环境一致。此外,您可能希望GUI元素比这些工具包通常允许的更具表现力

    正是因为这样的原因才存在。这是一个GUI系统,专为游戏需求而设计

    此外,这些都不能提供游戏通常想要的处理方式。您通常希望游戏的级别低于这些工具包提供的级别。这就是像SDL和SFML这样的项目存在的原因


  • WxWidgets使用LGPL,这意味着您可以在项目中动态链接到它,而无需将项目强制为GPL或LGPL

    但是,我建议对任何游戏或渲染应用程序使用库,而不是您建议的库 CEGUI使用MIT许可证,该许可证没有LGPL严格,还允许您动态(首选)或静态链接到库,而无需强制您拥有自己项目的特定许可证。

    • 支持OpenGL3.2+核心配置文件(OpenGL3渲染器)
    • 支持非常旧的OpenGL版本(OpenGL渲染器)
    • 如果您想使用Ogre或Irrlicht引擎,它也可以依赖OpenGL,CEGUI还通过CEGUIOGRENDERER和CEGUIIRRLICHT渲染器支持这两个渲染器
    • S支持Windows、Linux和Mac OS X,如您所愿
    • 因为有人在评论中问到:Unicode字符完全受支持,因此
      您可以使用希伯来语、阿拉伯语、各种亚洲字母表等,如当前字体演示中所示-当然,您需要安装一种CEGUI字体或使用另一种开源字体
    • 专为游戏、模拟和渲染应用而设计
    • 您可以对UI中的所有元素进行蒙皮(目前仅通过XML,不久也将使用编辑器)
    • 提供一个功能强大的编辑器(CEED),免费使用WYSIWYG(!)进行布局编辑
    • 通过C++代码和/或XML
    • 的变化完全可扩展和自适应
    • 强大的事件系统


    设置CEGUI及其依赖项并使其与您的项目一起运行可能需要一些时间,但从长远来看,它仍然会得到回报,因为它比大多数免费的UI解决方案具有更多的功能。想象一下,如果你使用UI库,然后发现它没有提供你需要的特定功能,那么几乎不可能添加它,因为CEGUI基于C++和XML,并且因为它的设计,你总是可以对CEGUI添加特定的调整。因此,即使从长远来看,您也很可能不会遇到限制。此外,它已经有了很多现成的功能,比同类库还多。

    严格来说,wxWidgets不是LGPL。这是LGPL+允许静态链接。我投票将这个问题作为离题来结束,因为您可能可以获得关于Unicode支持的帮助?我需要让这个游戏有不同的语言版本,包括RTL(阿拉伯语和希伯来语)。@wbaccari:你必须绕开CEGUI的文本渲染例程。为了进行Unicode文本布局,您需要使用Pango或ICU的布局类或其他东西。Qt、GTK+和wxWidgets当然支持这些语言,但它们对正确的游戏GUI所需的其他功能的支持还不够。如果可以的话,我甚至建议您制作自己的GUI系统。这就是我所做的,并发现它非常有价值。虽然DOC很棒,但QThread文档很糟糕,但它是错误的,而且完全是错误的。根据我的经验,有更多的情况下,文件只是过时了(没有任何局将改变它)。