下面使用CEGUI-0.7.7簡述下CEGUI的初始化過程:
1.編譯好CEGUI的SDK,設置好環境變量
2.創建一個win32應用程序,自己寫好winmain和消息處理,嫌麻煩的可以到下面網頁拷貝使用
winmain代碼:http://www.cnblogs.com/gamesky/archive/2012/07/28/2612911.html
3.初始化一個IDirect3DDevice,詳細過程網上多得是,我也給出一個
device初始化:http://www.cnblogs.com/gamesky/archive/2012/07/28/2612865.html
4.設置包含和依賴路徑、依賴庫
設置CEGUI 和DX的包含路徑 :
"$(DXSDK_DIR)\Include;"..\CEGUI-0.7.7\cegui\include";"..\CEGUI-0.7.7\Samples\common\include"
設置依賴路徑:
"$(DXSDK_DIR)\Lib\x86;"..\CEGUI-0.7.7\lib"
設置依賴庫:
d3d9.lib
d3dx9.lib
winmm.lib
CEGUIBase_d.lib
CEGUIDirect3D9Renderer_d.lib
注意:我用了相對路徑,請根據自己的實際情況修改
5.創建CEGUI的Renderer和System,設置相關資源具體代碼如下:
頭文件:
#include"CEGUI.h"
#include "RendererModules/Direct3D9/CEGUIDirect3D9Renderer.h"
//創建Direct3D9Renderer,注意:bootstrapSystem中創建了system myRenderer= &CEGUI::Direct3D9Renderer::bootstrapSystem(pDevice); // bootstrapSystem與下面2句等價 //myRenderer =&CEGUI::Direct3D9Renderer::create(pDevice); //CEGUI::System::create( *myRenderer ); //設置圖片解析模塊setImageCodec CEGUI::System::getSingleton().setImageCodec("FreeImageImageCodec"); //設置默認資源路徑 resPro = static_cast<CEGUI::DefaultResourceProvider*> (CEGUI::System::getSingleton().getResourceProvider()); resPro->setResourceGroupDirectory("schemes", "../datafiles/schemes/"); resPro->setResourceGroupDirectory("imagesets", "../datafiles/imagesets/"); resPro->setResourceGroupDirectory("fonts", "../datafiles/fonts/"); resPro->setResourceGroupDirectory("layouts", "../datafiles/layouts/"); resPro->setResourceGroupDirectory("looknfeels", "../datafiles/looknfeel/"); resPro->setResourceGroupDirectory("lua_scripts", "../datafiles/lua_scripts/"); resPro->setResourceGroupDirectory("schemas", "../datafiles/xml_schemas/"); resPro->setResourceGroupDirectory("animations", "../datafiles/animations/"); CEGUI::AnimationManager::setDefaultResourceGroup("animations"); CEGUI::Imageset::setDefaultResourceGroup("imagesets"); CEGUI::Font::setDefaultResourceGroup("fonts"); CEGUI::Scheme::setDefaultResourceGroup("schemes"); CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels"); CEGUI::WindowManager::setDefaultResourceGroup("layouts"); CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts"); CEGUI::XMLParser* parser = CEGUI::System::getSingleton().getXMLParser(); if (parser->isPropertyPresent("SchemaDefaultResourceGroup")) parser->setProperty("SchemaDefaultResourceGroup", "schemas"); //加載方案 CEGUI::SchemeManager::getSingleton().create( "GuiLookSkin.scheme" ); //設置默認字體 CEGUI::System::getSingleton().setDefaultFont( "Serif" ); //設置默認鼠標圖標 CEGUI::System::getSingleton().setDefaultMouseCursor( "WindowsLook", "MouseArrow" ); WindowManager& wmgr = WindowManager::getSingleton(); //創建跟窗口 w_root= wmgr.createWindow( "DefaultWindow","MainRoot"); //加載布局文件 CEGUI::Window *pUI=wmgr.loadWindowLayout("bottomhud.layout"); w_root->addChildWindow(pUI); //設置GUI的底部窗口 System::getSingleton().setGUISheet( w_root );
6.繪制GUI,在每一幀的繪制函數中加入
CEGUI::System::getSingleton().renderGUI();