|
发表于 2010-6-11 09:45:00
|
显示全部楼层
Re:ogre1.7.1 与 cegui 0.7.1的兼容问题
问题解决了,按cegui自己的说法,出现这样的问题是因为cegui绎出的SDK早于ogre发布版,可能出现冲突,细节我也没深挖,毕竟我只想用它,而且我是菜鸟。
我下了最新2010.6.7的CEGUI-snapshot-0.7.100607-vc8版本的(里面的samples不再直接针对ogre了,但对d3d和opengl渲染器是开放的),设置好路径,运行ogre测试程序,就ok了。
源代码关键部分(VS属性中应包含相应目录):
//.h:
#include <CEGUI.h>
#include <RendererModules/Ogre/CEGUIOgreRenderer.h>
#include <XMLParserModules/XercesParser/CEGUIXercesParser.h>
#ifdef _DEBUG
#pragma comment(lib,"CEGUIBase_d.lib")
#pragma comment(lib,"CEGUIOgreRenderer_d.lib") //注意,用什么渲染器就应包含相库
#pragma comment(lib,"CEGUIXercesParser_d.lib")
#else
#pragma comment(lib,"CEGUIBase.lib")
#pragma comment(lib,"CEGUIOgreRenderer.lib")
#pragma comment(lib,"CEGUIXercesParser.lib")
#endif
//.cpp 这里直接copy网上的代码:
CEGUI::OgreRenderer &myRenderer = CEGUI::OgreRenderer::create();
CEGUI::System::create( myRenderer );
CEGUI: efaultResourceProvider* rp;
rp = static_cast<CEGUI::DefaultResourceProvider*>
(CEGUI::System::getSingleton().getResourceProvider());
rp->setResourceGroupDirectory("schemes", "../datafiles/schemes/");
rp->setResourceGroupDirectory("imagesets", "../datafiles/imagesets/");
rp->setResourceGroupDirectory("fonts", "../datafiles/fonts/");
rp->setResourceGroupDirectory("layouts", "../datafiles/layouts/");
rp->setResourceGroupDirectory("looknfeels", "../datafiles/looknfeel/");
rp->setResourceGroupDirectory("lua_scripts", "../datafiles/lua_scripts/");
rp->setResourceGroupDirectory("schemas", "../datafiles/xml_schemas/");
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( "TaharezLook.scheme" );
CEGUI::System::getSingleton().setDefaultFont( "DejaVuSans-10" );
CEGUI::System::getSingleton().setDefaultMouseCursor( "TaharezLook", "MouseArrow" );
WindowManager& wmgr = WindowManager::getSingleton();
Window* myRoot = wmgr.createWindow( "DefaultWindow", "root" );
System::getSingleton().setGUISheet( myRoot );
FrameWindow* fWnd = static_cast<FrameWindow*>(wmgr.createWindow( "TaharezLook/FrameWindow", "testWindow" ));
myRoot->addChildWindow( fWnd );
fWnd->setPosition( UVector2( UDim( 0.25f, 0 ), UDim( 0.25f, 0 ) ) );
fWnd->setSize( UVector2( UDim( 0.5f, 0 ), UDim( 0.5f, 0 ) ) );
fWnd->setText( "Hello World!" );
程序执行要成功,我是在自己工程的bin下放了datafiles,同时,在debug或release下放入了下面:
1、ogre运行支持库,直接从ogrehome下的bin文件夹debug或release中copy;
2、cegui运行支持库,直接从ceguihome下的bin文件夹中copy; 同时copy加入ceguihome\dependencies\bin下的文件。
|
|