OGRE 1.64 與 CEGUI 0.71 閒談一刻

 最近開始搞UI,去CEGUI官網下了最新的穩定版0.7.1,看DEMO。當然,看CEGUI的設計代碼更有幫助。可惜以我現在的時間和條件,根本不允許啊~~等工作穩定以後,少不了要看CEGUI及OGRE的設計源碼。

 

其實CEGUI的設計很輕便,看DEMO根本就是一種享受。一切都是那麼的順利,知道我想把0.7.1的庫鏈接到我以前的DEMO中去的時候。問題出現了。OgreCEGUIRenderer這個傢伙出問題了,它居然有純虛函數。。。搞不定,重編譯OGRE1.6.4,使用最新的CEGUI做依賴。還是不行,好了,只有手動修改源碼(當然不涉及OGRE的核心,只是改改OgreCEGUIRenderer~)。結果有些地方改了,可以編譯通過了。可還有一些CEGUI的概念,我都搞不太懂,又不敢大改特改~~於是乎,放下問題,吃飯去。

 

一路上,都在想,到底是誰依賴誰啊。OGRE是個圖形渲染引擎,CEGUI是UI渲染引擎,基本就是一個界面管理器。而且看看CEGUI的實現,裏面包含了對OGL,D3D,OGRE,IRRLICHT等封裝的Renderer。。也就是說,CEGUI只關心“業務”,不關心“邏輯”,真正的渲染器應該是OGRE!所以,到了後來OGRE裏的CEGUI部分基本就沒更新過。到了1.6.4,居然還在使用CEGUI0.5.1~~這可是很不“時髦”的啊,CEGUI官網上幾乎找不到0.5.1版本(開個玩笑,最新穩定版0.7.1,上一個穩定版0.6.0,上上一個穩定版0.5.0)。其實,也沒什麼奇怪的,OGRE根本就不關心那些UI啊,物理啊,聲音啊什麼的。看看他的命名,OgreGUIRenderer,“根本不把CEGUI放在眼裏”,它認爲,只要有個UI管理器就行了,管你什麼CEGUI呢~其實OGRE有好幾個UI管理器可選,只不過CEGUI是最流行,最優秀的一個~

 

好了,這個對接工作OGRE不做了,只更新到CEGUI0.5.1,後面不管了。只是告訴用戶有個UI管理器很牛X,他叫CEGUI~這裏只有一個體驗版,要想用全功能版,自己找去。於是呢,這些工作就落到了CEGUI頭上。不過CEGUI真的很強大,也很勤奮,一口氣把D3D,OGL,OGRE,IRRLICHT的渲染器,資源管理器什麼的都跟你做好~~想用哪個任你挑!

 

有了這個思路,於是,我就找到了CEGUI的OgreRenderer,從此告別了OGRE那陳舊不堪的OgreGUIRenderer~~~

 

世界從此輕鬆多了,創建Renderer也簡單多了。如果使用OGRE自動創建的窗口,CEGUI::OgreRenderer::bootstrapSystem直接空參數啓動。不僅如此,它還額外贈送了你一些小禮物,註釋上如是說:

 

O(∩_∩)O哈哈~太好了~~(如果你沒使用OGRE自動創建的窗口,可以選擇static OgreRenderer& bootstrapSystem(Ogre::RenderTarget& target);)。。這個是因爲從OGRE的全局Root中可以獲取自動創建的窗口。而手動創建的需要制定名稱去獲取,所以,CEGUI沒那麼神,它不知道你給你的窗口起了什麼名字,這個就不能代勞了~~

 

對了,別忘了釋放內存,否則又要泄露了~~

與bootstrapSystem對應的是CEGUI::OgreRenderer::destroySystem();

 

詳情請看註釋:

 

發佈了64 篇原創文章 · 獲贊 0 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章