1. 程式人生 > >osgEarth的Rex引擎原理分析(十五)分頁瓦片載入器在更新遍歷時對請求處理過程

osgEarth的Rex引擎原理分析(十五)分頁瓦片載入器在更新遍歷時對請求處理過程

目標:(十四)中的34

osgEarthDrivers/engine_rex/Loader.cpp
void
PagerLoader::traverse(osg::NodeVisitor& nv)
{
            for(count=0; count < _mergesPerFrame && !_mergeQueue.empty(); ++count)
            {
                Request* req = _mergeQueue.begin()->get();
                if ( req && req->_lastTick >= _checkpoint )
                {
                    OE_START_TIMER(req_apply);
                    req->apply( getFrameStamp() );
                    double s = OE_STOP_TIMER(req_apply);

                    req->setState(Request::FINISHED);
                }

                _mergeQueue.erase( _mergeQueue.begin() );
            }   

            for(Requests::iterator i = _requests.begin(); i != _requests.end(); )
            {} 
}

這裡的請求本質上是osgEarth::Drivers::RexTerrainEngine::LoadTileData

osgEarthDrivers/engine_rex/LoadTileData
namespace osgEarth { namespace Drivers { namespace RexTerrainEngine
{    
    class LoadTileData : public Loader::Request
    {}
}
}}

具體處理過程:

1、從合併請求佇列中取出第一個請求,總共處理的請求數不超過設定的每幀最多處理的數目,對請求進行處理

2、處理所有已處理的請求佇列_requests中的請求

 

 

 

 

 

待繼續分析列表:

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

30、重新整理rex引擎((十二)中問題)

31、重新整理邊界作用((十二)中問題)

32、osgEarth::Metrics類的意義((十四)中問題)

33、請求合併佇列_mergeQueue((十四)中問題)

34、分頁瓦片載入器在更新遍歷時對請求處理過程((十四)中問題)

35、分頁瓦片載入器在更新遍歷時對已處理請求裁剪過程((十四)中問題)

36、已處理的請求佇列_requests((十四)中問題)