让子弹再飞一会

好的 ogre的page 本身比较复杂 层次比较多 OgreTerrain简化了其实现
如下图:
->pagedWord
->pagedWorldSection(TerrainGroup)->Terrains
pageManager->pagedWord->pagedWorldSection(TerrainGroup)->Terrains
->pagedWorldSection(TerrainGroup)->Terrains
.....
当然 pagedWorldSection含有page 其本身内部采用TerrainGroup的实现
好 继续
看看ogre自带的terrain例子是个好的开始
我开始摇滚了
我们要paging 于是在terrain.h中打开#define paging(去掉注释就可以了)
编译 运行 我假设你的ogre是启用了boost thread的
好 出错了吗 没有? 靠 反正我是出错了 FileNotFound 仔细看 是没找到类似terrain0000000.dat的文件 靠靠靠
在其media下看看 是没有这个文件嘛
好的 先关掉paging 注释#define paging 编译 运行 一切OK 地形能出来 如果你保存了该地形 那么在media在会有一个类似terrain0000000000.dat的文件
好 让我们来分析下
通过查看TerrainPagedWorldSection.cpp的代码
找到函数loadPage()
我们可以看到defineTerrain(x,y)的代码 好 这个函数会默认根据x,y产生一个文件名 然后 该terrain将会从该文件中载入地形高度等信息 如果没有这个文件 当然就报错了
解决思想是先看看有没有该文件 如果没有 就使用defineTerrain(x,y,0) 即默认高度为0的一个地形
1
void TerrainPagedWorldSection::loadPage(PageID pageID, bool forceSynchronous)
2
{
3
if (!mParent->getManager()->getPagingOperationsEnabled())
4
return;
5
6
PageMap::iterator i = mPages.find(pageID);
7
if (i == mPages.end())
8
{
9
// trigger terrain load
10
long x, y;
11
// pageID is the same as a packed index
12
mTerrainGroup->unpackIndex(pageID, &x, &y);
13
14
Ogre::String geneFileName = mTerrainGroup->generateFilename(x,y);
15
if(Ogre::ResourceGroupManager::getSingleton().resourceExistsInAnyGroup(geneFileName))
16
{
17
mTerrainGroup->defineTerrain(x, y);
18
}
19
else
20
{
21
mTerrainGroup->defineTerrain(x,y,0.0f);
22
}
23
mTerrainGroup->loadTerrain(x, y, forceSynchronous);
24
}
25
26
PagedWorldSection::loadPage(pageID, forceSynchronous);
27
}
28
再次打开#define paging
OK OVER
posted on 2012-11-19 16:52
野猪红 阅读(440)
评论(0) 编辑 收藏 引用 所属分类:
Ogre