关于OGRE基础教程6中CEGUI的layout文件can not locate的问题

教程是针对以前版本的OGRE和CEGUI的。所以还是.xml格式后缀,现在CEGUI7.1使用的是.layout后缀,并且在配置Resource.cfg的时候需要把layout文件的路径设置在[general]配置节下面。这个问题需要再仔细看看resourcemanager模块是怎么处理这些配置的,我再写个详细说明。

接上面问题:

  经过查看CEGUI和OGRE的源代码,发现:在CEGUI7.1版本中使用         mGUIRenderer=&CEGUI::OgreRenderer::bootstrapSystem();

类似的代码来初始化,在OgreRenderer::bootstrapSystem();

中具体的初始化代码如下:

    OgreRenderer& renderer = OgreRenderer::create(target);
      OgreResourceProvider& rp = createOgreResourceProvider();
      OgreImageCodec& ic = createOgreImageCodec();

其中重要的是OgreResourceProvider,在CEGUI中有默认的resourceprovider,在OGRE 中我们调用了bootstrapSystem,自然使用的就是OgreResourceProvider,自然资源的查找遵循OGRE的配置规则。

再深入会发现:在WindowManager::loadWindowLayout该方法中会有

System::getSingleton().getXMLParser()->parseXMLFile(handler,   filename, GUILayoutSchemaName, resourceGroup.empty() ? d_defaultResourceGroup : resourceGroup);这行,我们查找parseXMLFile方法在类

ExpatParser : public XMLParser中,而在ExpatParser::parseXMLFile中很快发现秘密所在:CEGUI::System::getSingleton().getResourceProvider()->loadRawDataContainer(filename, rawXMLData, resourceGroup);问题很明了具体调用关系如下:

CEGUI->初始化(包括OgreResourceProvider)->loadWindowLayout->parseXMLFile->getResourceProvider()->loadRawDataContainer

自然报错误是在OGRE的ResourceManager模块当中

 

至于为何一定要在general下,我想应该是我们没有在loadWindowLayout的时候提供资源组的名称,所以使用了默认的general组。

 

转载于:https://www.cnblogs.com/dwjaissk/archive/2010/05/18/1738123.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值