清源游民? gameogre@gmail.com
在以前的筆記中已經(jīng)對 CEGUI 的使用做了簡單的介紹,這里為了完整性還是把它 C & P 一下:
使用 cegui 來制作界面 , 不論在何種平臺下 , 有基本的三大步驟要做 :
1, 創(chuàng)建一個 CEGUI::Render 實(shí)例
2, 創(chuàng)建 CEGUI::System 對象
3, 調(diào)用各種方法來渲染用戶界面
第一步 , 在我使用的 ogre 環(huán)境下使用以下代碼來創(chuàng)建 CEGUI::Render 實(shí)例
Ogre3D
CEGUI::OgreCEGUIRenderer* myRenderer =
?????? new CEGUI::OgreCEGUIRenderer(myRenderWindow);
第二步相當(dāng)簡單 , 可使用 new CEGUI::System(myRenderer);
第三步,基本上來講,大部分平臺下,如 direct3D, OpenGL, 我們在渲染循環(huán)的尾部調(diào)用 CEGUI::System::renderGUI 來開始界面的渲染。如果我們使用 ogre3d 引擎,這一步不需要 我們顯示的執(zhí)行。 創(chuàng)建 CEGUI 窗口,我們可以使用兩種形式,一是 C ++代碼,二是編輯 XML layout 文件。
CEGUI 本身偵測用戶輸入,這些不是 CEGUI 的責(zé)任,而是程序的員的責(zé)任。當(dāng)有用戶外部輸入時(shí),我 們可以選擇將這些消息告知 CEGUI ,這樣 CEGUI 才會響應(yīng)。
CEGUI 使用回調(diào)機(jī)制來進(jìn)行消息處理??梢詾槟硞€窗體的特定事件注冊一個函數(shù),當(dāng)窗體事件發(fā)生時(shí), CEGUI 會自動調(diào)用所注冊的函數(shù)。
DEMO 中需要注意的是 Render To Texture 的實(shí)現(xiàn)。
先創(chuàng)建在 ogre 中的 RTT:
RenderTexture * rttTex = mRoot->getRenderSystem()->createRenderTexture( "RttTex", 512, 512, TEX_
TYPE_2D , PF_R8G8B8 );
再轉(zhuǎn)換成CEGUI可識別的:
// Retrieve CEGUI texture for the RTT
??????? CEGUI::Texture* rttTexture = mGUIRenderer->createTexture((CEGUI::utf8*)"RttTex");
根據(jù)這個Texture生成了一個ImageSet;
在ImageSet中定義了一個Image(名為RttImage);其大小與上邊的Texutre同樣大小。
當(dāng)在窗口中增加一個static Image時(shí),把其image屬性設(shè)為 ” RttImage ” 即可。
posted on 2007-03-05 12:43
清源游民 閱讀(1736)
評論(0) 編輯 收藏 引用 所屬分類:
OGRE