zoukankan      html  css  js  c++  java
  • 关于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常见报错解释
    selenium键盘操作
    html常用属性,标签,选择器
    模块(三)
    类的继承
    java接口
    java新建文件夹中的绝对路径和相对路径的理解以及中文乱码问题
    Java IO
    JS中的排序算法(-)冒泡排序
    CSS+DIV布局中absolute和relative的区别
  • 原文地址:https://www.cnblogs.com/dwjaissk/p/1738123.html
Copyright © 2011-2022 走看看