2010年5月18日

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

 

posted @ 2010-05-18 12:57 健忘猪 阅读(401) 评论(0) 编辑

如何配置和编译ogre 1.7.0 + cegui 0.7.1

ogre 1.7.0的下载、配置和编译指南

----------------------------------------------- 

1.  ogre 1.7.0的下载地址:https://sourceforge.net/projects/ogre/files/ogre/1.7/ogre-v1-7-0.zip/download

2.  ogre 1.7.0依赖库的下载地址(不定期更新,请关注该贴):http://www.ogre3d.org/forums/viewtopic.php?f=1&t=54533

3.  将ogre解压,建议将解压后生成的ogre目录改名为对应的版本号,例如:F:\SDK\ogre-v1-7-0,以区分各个版本

4.  将依赖库解压到ogre的目录中,例如:F:\SDK\ogre-v1-7-0\Dependencies

5.  根据自己的VC版本打开F:\SDK\ogre-v1-7-0\Dependencies\src目录中对应的工程VS20XX.sln

6.  编译出依赖库的debug和release

7.  下载最新版本的cmake:http://www.cmake.org/cmake/resources/software.html

8.  解压cmake到任意目录,例如:F:\Tools\cmake-2.8.0-win32-x86

9.  运行F:\Tools\cmake-2.8.0-win32-x86\bin\cmake-gui.exe

10. 在"Where is the source code"和"Where to build the binaries"中分别设置ogre的解压路径,例如:F:\SDK\ogre-v1-7-0

11. 点击configure,选择好VC的版本

12. 点击Generate后将生成OGRE.sln

13. 编译出ogre的debug和release

14. 如果不需要运行samples,那么只需要编译OgreMain、RenderSystem_Direct3D9(或其他)和所需的Plugin即可 

 

cegui 0.7.1的下载、配置和编译指南

----------------------------------------------- 

1.  cegui 0.7.1的下载地址:http://prdownloads.sourceforge.net/crayzedsgui/CEGUI-0.7.1.zip?download

2.  cegui 0.7.1依赖库的下载地址:http://prdownloads.sourceforge.net/crayzedsgui/CEGUI-DEPS-0.7.x-r1-vc9.zip?download

3.  将cegui解压,建议将解压后生成的cegui目录改名为对应的版本号,例如:F:\SDK\cegui-v0-7-1,以区分各个版本

4.  将依赖库解压到cegui的目录中,例如:F:\SDK\cegui-v0-7-1\Dependencies

5.  进入目录F:\SDK\cegui-v0-7-1\projects\premake

6.  用记事本打开目录下的config.lua,找到两个变量:OGRE_PATHS和OIS_PATHS

7.  将其修改成对应的ogre和ois的路径,例如:

    OGRE_PATHS = { "F:\SDK\ogre-v1-7-0", "OgreMain/include", "lib" }

    OIS_PATHS = { "F:\SDK\ogre-v1-7-0/Dependencies/include/OIS/", "", "lib" }

8.  找到CEGUI_OLD_OIS_API变量,设置为false

9.  找到OGRE_RENDERER变量,设置为true

10. 找到SAMPLES_OGRE变量,设置为true

11. 进入目录F:\SDK\cegui-v0-7-1\projects\premake,运行build_vs2008.bat(或对应的其他版本),你将看到CEGUI.sln

12. 继续运行build_samples_vs2008.bat(或对应的其他版本),你将看到CEGUISamples.sln

13. 在编译CEGUI.sln和CEGUISamples.sln时,如果依然存在找不到h或是link错误,请打开工程属性,修改Additional Include Directories和Additional Library Directories中对应的ogre和ois相关的路径

14.  请注意ogre 1.7.0的lib是生成在debug和release子目录中,记得修改为正确的link路径

15. 运行sample前,记得先复制F:\SDK\cegui-v0-7-1\dependencies\bin下的所有dll到F:\SDK\cegui-v0-7-1\bin下面,这样就不会报错提示缺少dll了

 

 

各种开源库的配置建议

----------------------------------------------- 

1.  右键点击我的电脑 -> 属性 -> 高级 -> 环境变量

2.  根据不同开源库的名称,新建出对应的变量名和路径值,例如:变量OGRE,值为F:\SDK\ogre-v1-7-0

3.  将VC的Additional Include Directories和Additional Library Directories中将之前的死路径修改为类似:$(OGRE)/OgreMain/include

4.  未来当ogre或cegui再有升级时,则不需要手动一个个修改路径,只用一次性修改对应的环境变量的值(路径)即可

5.  请注意,当环境变量发生变化,VC必须重启才能识别

posted @ 2010-05-18 12:51 健忘猪 阅读(198) 评论(0) 编辑