目标:(九)中问题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子节点
13、绑定渲染器
14、设置地图的回调函数,包括地图添加、移动、删除等。
15、将地图图层添加到rex引擎中
16、构建环境上下文_engineContext,包括地图、rex引擎、共享几何图形池、分页瓦片加载器、分页瓦片卸载器、栅格化器、活跃瓦片寄存器、绑定的渲染器、rex引擎配置选项、选择信息(记录lod切换的信息,创建rex引擎时就初始化)、瓦片包围盒修改回调函数(前面new过)、
待继续分析列表:
9、earth文件中都有哪些options((九)中问题)
10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)
11、rex地理信息引擎的四梁八柱((九)中问题)
12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题)
13、RexTerrainEngineNode中_mapFrame的作用((十二)中问题)
14、地形变形(Terrain morphing)((十二)中问题)
15、地球瓦片过期门限的含义((十二)中问题)
16、高分辨率优先的含义((十二)中问题)
17、OSGEARTH_DEBUG_NORMALS环境变量的作用((十二)中问题)
18、活跃瓦片寄存器的作用((十二)中问题)
19、资源释放器子节点的作用((十二)中问题)
20、共享几何图形池子节点的作用((十二)中问题)
21、分页瓦片加载器子节点的作用((十二)中问题)
22、分页瓦片卸载器子节点的作用((十二)中问题)
23、栅格化器子节点的作用((十二)中问题)
24、地形子节点的作用((十二)中问题)
25、绑定渲染器的作用((十二)中问题)
26、地图回调函数的作用((十二)中问题)
27、如何将地图图层添加到rex引擎中((十二)中问题)
28、选择信息的作用((十二)中问题)
29、瓦片包围盒修改回调函数的作用((十二)中问题)