2011-08-30 20 views
0

我打算開始一個新項目的工作。這是一款使用OpenGL的Windows,Linux和Mac OS X的3D遊戲,我將需要一個用於GUI,窗口和處理輸入的庫。我結束了3個選擇Qt,WxWidgets和GTK +。他們都在LGPL許可下。Qt或wxWidgets

1- LGPL是否允許使用這些庫來製作專有應用程序?

2-這3個應用程序中哪一個最適合我?

+1

嚴格的wxWidgets不是LGPL。這是LGPL +允許靜態鏈接 –

+1

我投票結束這個問題作爲題外話,因爲[許可建議是關於堆棧溢出題外話。](http://stackoverflow.com/help/on-topic)您可能會能夠在[程序員堆棧交換中獲得幫助,但**在繼續之前仔細閱讀他們的常見問題解答**](http://meta.programmers.stackexchange.com/questions/7265/when-is-a-software-licensing-問題專題) – durron597

回答

13
  1. 是的,只要你不靜態鏈接給他們(即:使用它們作爲DLL)。雖然wxWidgets可以讓你靜態鏈接而不會變成GPL。

  2. 以上都不是。如果你正在製作3D遊戲,那麼這些都不會滿足你的需求。 遊戲的GUI需求與典型桌面應用程序的GUI需求大不相同。在遊戲中,你希望你特定的GUI元素與特定的藝術方向保持一致,不符合桌面環境。另外,您可能希望GUI元素比這些工具包通常允許的更具表現力。

    CEGUI存在這樣的理由。這是一款專爲滿足遊戲需求而設計的GUI系統。

    另外,這些都不能提供遊戲通常想要處理它的方式。您通常希望遊戲的級別低於這些工具包提供的級別。這就是爲什麼像SDL和SFML這樣的項目存在的原因。

+0

Unicode支持呢?我需要使用包括RTL(阿拉伯語和希伯來語)在內的不同語言提供遊戲。 –

+0

@wbaccari:你必須繞過CEGUI的文本渲染例程。你需要使用Pango或ICU的佈局類或其他類來完成Unicode文本佈局。 Qt,GTK +和wxWidgets當然支持這些語言,但是他們對其他功能的支持卻缺乏適當的遊戲GUI。 –

+1

如果可以,我甚至會建議製作自己的GUI系統。這是我所做的,並發現它非常有益。 – ssell

1

1 - 是的,前提是你的項目不需要庫本身

2的改變 - 我強烈 reccommend的Qt 新窗口的應用程序,如果不是有沒有其他原因優秀文檔(儘管還有很多其他的獲勝點,但它很快就會變得主觀)。 GTK和WxWidgets都會讓你浪費精力,思考你不應該考慮的事情。 Qt更容易a)自定義,並且b)當您不關心定製時忽略它。

雖然3D的東西,你可能要考慮全面的引擎,如,哦,Irrlicht的或OGRE3D或任何其他一些

+1

雖然這個doc很棒,但QThread文檔很糟糕,這是錯誤的,錯誤的。從我的經驗來看,還有更多的情況是文件只是過時的(並且沒有任何新聞會改變它)。 – drahnr

1

WxWidgets使用LGPL,這意味着您可以在您的項目中動態鏈接到它,而無需強制您的項目成爲GPL或LGPL。

不過,我建議使用CEGUI,而不是你的建議的庫,任何遊戲或渲染應用

CEGUI使用MIT許可證比LGPL那麼嚴格,也允許你動態鏈接庫(首選)或者靜態地進行,無需強制您爲自己的項目獲得特定的許可證。

  • 支持OpenGL 3。2+核心配置文件(OpenGL3渲染器)
  • 支持很老的OpenGL版本(OpenGL渲染)
  • 如果你想使用食人魔或Irrlicht的發動機,該發動機還可以依靠的OpenGL,也CEGUI支持通過這兩種渲染器CEGUIOgreRenderer和CEGUIIrrlichtRenderer
  • Ssupports Windows,Linux和Mac OS X的,就像你想
  • 因爲有人在評論中問道:Unicode字符的充分支持,這樣
    你可以用希伯來語,阿拉伯語,所有類型的亞洲文字的等等,如當前字體演示中所示 - 當然,您需要安裝其中一種CEGUI字體或使用其他字體開源字體
  • 是專門爲遊戲,模擬和渲染應用
  • 設計可以的肌膚在UI的所有元素(目前只能通過XML,也很快用編輯器)
  • 提供了強大的編輯器(CEED )免費版WYSIWYG(!)進行佈局編輯!
  • 通過用C變化++代碼和/或XML
  • 強大的事件系統

完全可擴展的和自適應這可能需要一段時間來設置CEGUI和它的依賴,並得到它運行與您的項目,但它仍然會從長遠來看,因爲它具有比大多數免費的用戶界面解決方案更多的功能。想象一下,如果你使用了一個UI庫,然後發現它沒有提供你需要的特定功能是多麼的惱人,而且幾乎不可能添加它 - 因爲CEGUI基於C++和XML,並且由於其設計,您可以隨時添加對CEGUI的特定調整。所以即使從長遠來看,你也很有可能不會受到限制。此外,它已經有很多功能 - 比同類庫更多。