我要开始做一个新项目。这是一款基于Windows, Linux和Mac OS x使用OpenGL的3D游戏,我将需要一个用于GUI,窗口和处理输入的库。我最终选择了3个Qt, WxWidgets和GTK+。
1- LGPL是否允许使用这些库来制作专有应用程序?
2-这三个应用程序中哪一个最适合我?
-
是的,只要你不静态地链接到它们(即:使用它们作为dll)。虽然wxWidgets允许您在不受GPL约束的情况下静态链接。
-
以上皆非。如果你正在制作一款3D游戏,那么这些方法都不能满足你的需求。游戏的GUI需求与典型桌面应用程序的GUI需求非常不同。在游戏中,你希望特定的GUI元素与特定的艺术方向保持一致,而不是与桌面环境保持一致。另外,您可能希望您的GUI元素比这些工具包通常允许的更具表现力。
CEGUI的存在就是因为这样的原因。这是一个为游戏需求而设计的GUI系统。
而且,这些都没有提供游戏通常想要处理的输入方式。你通常希望在游戏中添加比这些工具包更低级的内容。这就是为什么像SDL和SFML这样的项目存在。
1 -是的,只要你的项目不需要修改库本身
2 -我强烈推荐Qt 用于新的窗口应用程序,如果没有其他原因,它有优秀的文档(尽管有许多其他的优势,但它很快就会变得主观)。GTK和WxWidgets都会让你浪费精力去想那些你根本不应该去想的事情。Qt更容易a)定制,b)当你不关心定制时忽略。
尽管对于3D内容,你可能想要查看成熟的引擎,比如,哦,irrlight或Ogre3D或其他许多
WxWidgets使用LGPL,这意味着您可以在项目中动态链接到它,而不会强制您的项目使用GPL或LGPL。
然而,我建议使用CEGUI而不是你建议的库,对于任何游戏或渲染应用程序
CEGUI使用MIT许可证,它比LGPL不那么严格,并且还允许您动态(首选)或静态地链接到库,而无需强制您为自己的项目拥有特定的许可证。
- 支持OpenGL 3.2+ Core Profile (OpenGL3 Renderer)
- 支持非常旧的OpenGL版本(OpenGL Renderer)
- 如果你想使用Ogre或irrlight引擎,也可以依赖于OpenGL, CEGUI也支持这两个渲染器,通过CEGUIOgreRenderer和ceguiirlichtrenderer
- 因为有人在评论中问:Unicode字符是完全支持的,所以
你可以使用希伯来语,阿拉伯语,各种亚洲字母等,如当前字体演示所示-当然你需要安装CEGUI字体之一或使用另一种开源字体 - 是专门为游戏,模拟和渲染应用程序设计的
- 提供了一个强大的编辑器(CEED)的布局编辑与所见即所得(!)免费!
- 是完全可扩展和自适应的,通过改变c++代码和/或XML
支持Windows, Linux和Mac OS X,只要你想
你可以为UI中的所有元素添加皮肤(目前只能通过XML,很快也可以使用编辑器)
设置CEGUI及其依赖项并使其与您的项目一起运行可能需要一些时间,但从长远来看,它仍然会得到回报,因为它比大多数免费的UI解决方案具有更多的功能。想象一下,如果你使用一个UI库,然后发现它没有提供你需要的特定功能,而且几乎不可能添加这个功能,那将是多么令人恼火——因为CEGUI是基于c++和XML的,而且由于它的设计,你总是可以对CEGUI添加特定的调整。因此,即使从长远来看,你也很可能不会遇到限制。而且它已经有很多开箱即用的特性——比同类库要多。