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