• 关于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组。

  • 相关阅读:
    Python爬虫之路——简单的网页抓图
    vim修复,telnet安装启动,linux更新软件源
    用博客记录成长的历程
    CleanCode代码整洁之道培训总结(2015-03-14)
    MySQL 登录问题
    LeetCode——Set Matrix Zeroes
    CSS vertical-align属性的使用方法
    电子商务站点设计分析--首屏设计
    easyUI资料学习资料
    java实现DES加密与解密,md5加密
  • 原文地址:https://www.cnblogs.com/dwjaissk/p/1738123.html
Copyright © 2020-2023  润新知