OGRE可以通过两个接口来生成地形,分别是void TerrainSceneManager::setWorldGeometry( const String& filename )以及void TerrainSceneManager::setWorldGeometry(DataStreamPtr& stream, const String& typeName ),两者的根本区别就是一个是传递地形信息文件名一个是传递地形信息数据流,设计两个接口的目的是可以让用户使用自己的地形信息配置文件,而不必局限于OGRE定义的地形信息配置文件格式。在分析流程之前,先说明一点,为了提高渲染性能以及地形查找性能,OGRE把整个地形分成若干个地形页,每个地形页又分成了多个地形小块,到最后会把地形页及地形小块tile挂接到场景节点上。以下是生成地形的主要流程:
一:清除地形分级索引缓冲及地形分页,根据地形信息数据流加载地形信息配置文件,
void TerrainSceneManager::loadConfig(DataStreamPtr& stream),其先将地形配置信息从数据流中逐一读出到map中,然后通过void TerrainSceneManager::selectPageSource(const String& typeName, TerrainPageSourceOptionList& optionList)设置地形数据源(目前只有高度图数据源)。在地形信息配置文件中可以配置多个地形数据源,然后根据一种数据源类型生成地形,参数typeName就用来指定数据源类型,目前就是HeightMap,找到指定的数据源后&#x