目标:(九)中问题11
在(九)中创建rex引擎节点时,会调用osgEarth::TerrainEngineNode的构造函数,该函数负责设置rex引擎的名称、id、着色器和其它一些变量设置,还会添加地形_terrain子节点。
rex引擎的四梁八柱是从这里开始的
osgEarth/MapNode.cpp
void
MapNode::init()
{
_terrainEngine->setMap( _map.get(), terrainOptions );
}
对于rex地理信息引擎,这里的_terrainEngine就是osgEarth::Drivers::RexTerrainEngine::RexTerrainEngineNode
setMap主要完成以下工作:
1、调用父节点(osgEarth::TerrainEngineNode)的setMap方法
2、根据map构建MapFrame,_mapFrame
3、设置地形变形(Terrain morphing)的相关信息
4、检查地球瓦片过期环境变量
5、检查高分辨率优先环境变量
6、检查OSGEARTH_DEBUG_NORMALS环境变量
7、创建活跃瓦片寄存器_liveTiles
8、添加资源释放器_releaser子节点,在资源过期后调用releaseGLObjects方法
9、添加共享几何图形池_geometryPool子节点
10、添加分页瓦片加载器_loader,负责瓦片的加载工作
11、添加分页瓦片卸载器_unloader子节点
12、添加栅格化器_rasterizer子节点