write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
討論新聞群組及檔案
現在在國內做遊戲,似乎怎麼都繞不開OGRE和CEGUI的學習,因為他們實在是太流行了。。。。。OGRE在Google中搜尋game engine長期排在第一,而CEGUI又幾乎是OGRE的官方UI。。。畢竟不是蓋的。我第一份工作的時候就做過一些CEGUI相關的工作,(但是那時候引擎不是OGRE)但是一直沒有太深入的學習,然後在遊戲開發的路上繞了很大一圈,接觸了OpenGL(ES),以及各色2D,3D引擎,最後似乎還是回到了OGRE和CEGUI,所以還是有些感慨。。。。。。
當自己需要從頭開始做某些基礎工作的時候,與拿著成熟的架構和工程感覺還是有些不一樣的。比如CEGUI和OGRE的配置。。。。。。。
主要參考資料來自於《Building CEGUI for Ogre / OgreRenderer
》。
現在(2010.9.13)CEGUI的最新版是0.72,到這裡下載
。(源碼版本)
然後,將CEGUI解壓到某個地方。我這裡選擇的是OGRE的目錄下。
此時,CEGUI-0.7.2/projects/premake中可以看到批處理build_vs2008.bat,運行一下就可以得到想要的VS2008工程,第一次我嘗試的時候編譯此工程,然後拷貝相關的lib,dll到OGRE的相關目錄,會發現還是少一個檔案,debug版本是CEGUIOgreRenderer_d.lib,然後我發現還需要配置。這裡感覺就沒有那麼直觀了。。。。。。。。。不屬於work out of box,這也是本文寫作的唯一有效目的。。。。。
配置:
1。在批處理的目錄下的config.lua檔案中,修改如下兩行內容:
OGRE_PATHS = { "..", "include/OGRE", "lib" }
OIS_PATHS = { "..", "include/OIS", "lib" }
這裡第一個字串的路徑根據你將CEGUI解壓的地方來配置,我這裡由於CEGUI已經解壓到OGRE的目錄下,所以僅僅使用父目錄就可以了。
2。在config.lua中,將OGRE_RENDERER那一行設為true,如下:
OGRE_RENDERER = true
3。在新版的OGRE中增加了對boost的依賴,所以還需要配置一下boost。(修改CEGUI_EXTRA_PATHS的內容)
我這裡是:
CEGUI_EXTRA_PATHS = {
{ "../boost_1_42", "", "lib", "CEGUIOgreRenderer" },
}
此時會發現CEGUI的solution中會多出一個CEGUIOgreRenderer的工程。並且,經過前面的配置,路徑都已經配置好了。
這裡有些驚喜的是,發現了irrlicht相關的東西,呵呵,將來也可以嘗試,個人對irrlicht的簡單易用也印象深刻,不知道在學了OGRE後,下次還有沒有機會再次使用。
然後,編譯就好了,會報一堆的警告。。。。。。。。。。。。。感覺這些代碼寫的都有問題。。。。。在公司的代碼裡面,經常是一句warning都不能有的,而且這些waring都是類型轉換警告。。。。估計在某些時候肯定會有問題。。。暫時不管了。
事實上,最後還會有個錯誤,
LINK : fatal error LNK1104: cannot open file 'OgreMain_d.lib'
因為配置的時候好像不能分debug/release來配置,(前面的文檔沒有講這一點,我也沒有深究了。。。。也許有辦法吧)而OGRE的lib目錄事實上又分debug/release子目錄的。。。。。所以,其實看起來蠻自動化的配置,最後還是少不了手動幹預一下。
手動修改lib目錄後,問題解決。
此時將編譯出來的lib,dll都拷貝到OGRE的相關目錄,(因為我不準備修改CEGUI,所以簡單的就拷貝了,需要修改CEGUI的,可以直接修改CEGUI工程配置,設定為編譯後拷貝到相應目錄)就可以直接在OGRE中使用CEGUI了,只需要再配置工程的CEGUI include目錄就好。
然後,當遇到過這麼多坑以後,滿以為總該順利了。。。。。。事實上,還有一個大坑在前面等著你,在最新的CEGUI版本中,你會遇到“應用程式正常初始化(0xc0150002)失敗”錯誤,而且不會給你任何頭緒。。。。。其實我費了這麼多勁,非要從源碼編譯CEGUI和OGRE,而不是使用各自的SDK,就是因為使用SDK的時候碰到這個問題了,從經驗判斷應該是庫的編譯版本不匹配的問題,結果我自己將所有的源碼都編譯了一次了,還是有問題。。。。。。。。。無奈之餘,在網上搜尋了一下,碰到這個問題的人還不是少數。
這個哥們描述的背後的故事
。。。。。還提供了hack解決方案,牛,可惜我是用VS2008的,VS2005那個補丁不適合我,運行安裝不了,我也還是希望通過正常的補丁途徑解決。而這個哥們提供了完善的解決方案
。基本上,簡單的說,VS2008的解決方案就是下載正確的依賴檔案VC90
那個,或者直接下CEGUI SDK VS2008的SDK
,只是千萬不要下VC80任何相關的東西。。。。(我很鬱悶MS竟然不讓VS2008在這種程度上支援VS2005,起碼也能夠讓任何VS2005編譯的東西在VS2008得到直接的支援啊)然後為自己的VS2008打上SP1補丁,就好了。這個問題真的折騰了我挺久,希望大家不要再繼續被折騰了。。。。。。。。。。。。。
原創文章作者保留著作權 轉載請註明原作者 並給出連結
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie