Ogre载入Ogitor导出的场景

版本:

Ogre 1.7.2

pagedgeometry 1.1.1  下载:http://code.google.com/p/ogre-paged/downloads/list  (编译自行解决)

Ogitor 0.4.4

 

在Ogitor安装目录下找到SampleApp_Source这个文件夹  把 DotSceneLoader.h,rapidxml.hpp,DotSceneLoader.cpp三个文件

拷到自己的工作目录下,并加入自己的工程,同样在Ogitor的安装目录下把Projects下的SampleScene3拷到自己工程的源代码目录

在Ogitor安装目录下的bin目录下找到SampleAppConfig.xml拷到自己工程源代码目录,并修改相应的信息projectDir的值改为

场景目录,scene的值改为.scene文件的文件名,在我的机器上是:

<SampleApp projectDir="SampleScene3" scene="SampleScene3.scene"/>

 

 

在工程中引入pagedgeometry的include目录,并在依赖项中引入PagedGeometry.lib;OgreTerrain_d.lib;OgreTerrain_d.lib;OgreMain_d.lib;OIS_d.lib;

 

修改resources_d.cfg:

(SampleScene3文件夹放在源代码目录)

在[General]下加入:

FileSystem=./SampleScene3
FileSystem=./SampleScene3/Materials
FileSystem=./SampleScene3/Models
FileSystem=./SampleScene3/Terrain

FileSystem=G:/programming/Ogitor/ogitor/Media/TerrainTextures

最后面一个为Ogitor的安装目录下的Media下的TerrainTextures,视安装目录而定,样例中用到了该目录下的资源

 

 

在自己的框架中的create scene方法中加入以下代码(我的代码中为void DemoApp::setupDemoScene(),进入主循环前调用)

 

 

void DemoApp::setupDemoScene() { rapidxml::xml_document<> XMLDoc; // character type defaults to char rapidxml::xml_node<>* XMLRoot; std::ifstream fp; fp.open("SampleAppConfig.xml", std::ios::in | std::ios::binary); Ogre::DataStreamPtr stream(OGRE_NEW Ogre::FileStreamDataStream("SampleAppConfig.xml", &fp, false)); char* sampleAppConfig = strdup(stream->getAsString().c_str()); XMLDoc.parse<0>(sampleAppConfig); XMLRoot = XMLDoc.first_node("SampleApp"); Ogre::String projectDir = Ogre::String(XMLRoot->first_attribute("projectDir")->value()); mSceneFile = Ogre::String(XMLRoot->first_attribute("scene")->value()); mLoader = new DotSceneLoader(); mLoader->parseDotScene(mSceneFile, "General", OgreFramework::getSingleton().m_pSceneMgr);//这里最后一个参数为SceneManager指针 }

 

 

然后编译运行;

 

 

 

 

 

你可能感兴趣的:(xml,String,Stream,character,include,resources)