关于OGRE基础教程6中CEGUI的layout文件can not locate的问题
2010-05-18 12:57
513 查看
教程是针对以前版本的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组。
接上面问题:
经过查看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组。
相关文章推荐
- locate: can not open `/var/lib/mlocate/mlocate.db': 没有找到指定数据库文件
- 关于OGRE配置CEGUI系统出现的问题
- 关于Python数据分析基础教程 Numpy学习指南 第二版 第三章中代码所呈现的问题
- 关于CEGUI环境搭建的图文教程(主要致力于OGRE1.9.0)
- I学霸官方免费教程二(拓展):关于解决新建文件没有扩展名的问题
- 关于云储存或者百度云的基础问题, 用java/android 实现上传文件到云储存(比如百度云)
- 遇到问题----struts2文件下载出现Can not find a java.io.InputStream with the name的错误
- 关于android R.layout 中找不到已存在的布局文件问题的解决
- spring注入properties文件的can not resolve placeholder问题
- 关于android R.layout 中找不到已存在的布局文件问题的解决
- 智渔课堂官方免费教程二(拓展):关于解决新建文件没有扩展名的问题
- 遇到问题----struts2文件下载出现Can not find a java.io.InputStream with the name的错误
- 关于 can not find hdf5.h(hdf5:没有那个文件或目录)的解决方法
- Ogre基础教程7:CEGUI 与 Ogre(未完成)
- IntelliJIdea 10.5.2 解决jsp文件提示can not resolve...问题
- 关于MVC3 _Layout基础问题
- 关于在新建的package中用SetContentView()函数时无法找到已创建的R.layout的布局文件的的问题的解决办法
- 关于android R.layout 中找不到已存在的布局文件问题的解决
- 关于Can not update .ICEauthority文件解决方法
- 关于执行locate时报错“locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory”的处理