osgEarth的Rex引擎原理分析(十二)rex地理信息引擎的四梁八柱

目标:(九)中问题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、瓦片包围盒修改回调函数的作用((十二)中问题)

猜你喜欢

转载自blog.csdn.net/hankern/article/details/84091841