1. 程式人生 > >osgEarth的Rex引擎原理分析(十二)rex地理資訊引擎的四樑八柱

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、瓦片包圍盒修改回撥函式的作用((十二)中問題)