關於OGRE基礎教程6中CEGUI的layout檔案can not locate的問題

來源:互聯網
上載者:User

教程是針對以前版本的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組。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.