osgEarth的Rex引擎原理分析(二十)osgEarth::TerrainEngineNode中setMap方法作用
目標:(十二)中的問題12
不同於派生類RexTerrainEngineNode中setMap的內容(詳見(十二)),這裡主要完成以下工作:
1、設定地圖圖層_map
2、
建立地形瓦片模型工廠_tileModelFactory,用於建立覆蓋紋理、高程紋理、影像紋理、法線紋理、地形瓦片模型等。
相關推薦
osgEarth的Rex引擎原理分析(二十)osgEarth::TerrainEngineNode中setMap方法作用
目標:(十二)中的問題12 不同於派生類RexTerrainEngineNode中setMap的內容(詳見(十二)),這裡主要完成以下工作: 1、設定地圖圖層_map 2、 建立地形瓦片模型工廠_tileModelFactory,用於建立覆蓋紋理、高程紋理、影像紋理
osgEarth的Rex引擎原理分析(二十七)繫結渲染器的作用
目標:(十二)中的問題25 應該是渲染取樣器的繫結,這裡繫結應該理解為是否為取樣器保留了紋理單元,取樣器包含COLOR、CLOLOR_PARENT、ELEVATION、NORMAL、CONVERAGE和SHARED五種。 大概流程是這樣的,rex引擎在setMap時進行繫結初始化,一般都會對
osgEarth的Rex引擎原理分析(二十六)TileNode的_renderModel作用
目標:(十八)中的問題59 osgEarth::Drivers::RexTerrainEngine::TileRenderModel主要維護兩個變數:取樣器osgEarth::Drivers::RexTerrainEngine::Sampler向量_sharedSamplers和渲染通道osgE
osgEarth的Rex引擎原理分析(二十四)TileNode節點下的場景樹分析
目標:(十八)中的問題54 osgEarth::Drivers::RexTerrainEngine::TileNode是rex引擎下的一個重要節點,這個節點還不是真正在Earth中看到的瓦片,其內部還有場景樹,具體包括一個SurfaceNode和四個下一級LOD的TileNode子節點。Surf
osgEarth的Rex引擎原理分析(二十二)已處理的請求佇列_requests
目標:(十四)中問題36 這個_requests是PagerLoader的成員變數,用於存放所有在TileNode建立時建立的請求。在DatabasePager對請求進行處理的過程中(詳見(十七)),會用到這個佇列。 這個佇列不同於PagerLoader中的佇列_mergeQueue:後者是
osgEarth的Rex引擎原理分析(二十一)建立瓦片模型過程詳解
目標:(十七)中問題47 osgEarth/TerrainTileModelFactory.cpp TerrainTileModel* TerrainTileModelFactory::createTileModel(const MapFrame& fr
osgEarth的Rex引擎原理分析(二十三)PagerLoader的traverse過程詳解
目標:(十七)中問題48 主要包含兩個過程: 1、以處理過請求的載入 這是真正意義上的載入,剛創建出來的請求是從快取或檔案沒有關聯影像、高程等資料的,需要經過多執行緒處理後才有資料(詳見(十七))。對於這些處理過的請求,在PagerLoader的更新遍歷traverse中會進行實質性的處
osgEarth的Rex引擎原理分析(二)osg是如何根據副檔名尋找需要載入的動態連結庫外掛的
在(一)中有createLibraryNameForFile,它會根據副檔名構造需要載入的動態連結庫 osgDB/Registry.cpp ReaderWriter::ReadResult Registry::read(const ReadFunctor& re
osgEarth的Rex引擎原理分析(三十四)新增資源釋放器_releaser子節點
目標:(十二)中的問題8 由(三十三)可知 對要移除的瓦片節點,放入資源釋放器(本質是osg::Drawable物件),釋放分配的opengl資源。並不是立即釋放,而是要等到osgUtil::SceneView::draw時最終呼叫資源釋放器的drawImplementation時進行釋放,
osgEarth的Rex引擎原理分析(三十一)osgEarth::TerrainLayer中的_memCache(osgEarth::MemCache)詳解
目標:(二十一)中的問題66 繼承關係: osgEarth::Cache osgEarth::MemCache cache中的資料是通過cachebin來實現存放的,cachebin有兩種,繼承關係為: osgEarth::CacheBin
osgEarth的Rex引擎原理分析(三十三)分頁瓦片解除安裝器子節點的作用
目標:(十二)中的問題22 分頁瓦片解除安裝器是在Rex引擎的setMap函式中建立的,建立之初就關聯了活躍瓦片暫存器和資源釋放器。作用見下面分析。 osgEarthDrivers/engine_rex/RexTerrainEngineNode.cpp void RexTerrainEngi
osgEarth的Rex引擎原理分析(十二)rex地理資訊引擎的四樑八柱
目標:(九)中問題11 在(九)中建立rex引擎節點時,會呼叫osgEarth::TerrainEngineNode的建構函式,該函式負責設定rex引擎的名稱、id、著色器和其它一些變數設定,還會新增地形_terrain子節點。 rex引擎的四樑八柱是從這裡開始的 osgEarth/Ma
osgEarth的Rex引擎原理分析(十一)如何根據earth檔案options建立不同的地理資訊引擎節點
目標:問題(九)中10 在對MapNode做初始化時,需要建立地理資訊引擎節點。 void MapNode::init() { _terrainEngine = TerrainEngineNodeFactory::create( terrainOptions ); } osgEa
osgEarth的Rex引擎原理分析(十)earth檔案中都有哪些options
目標:(九)中問題9 通過在earth檔案中搜索options,發現主要有這麼幾種: <options> <profile> <srs>+proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_
osgEarth的Rex引擎原理分析(十四)分頁瓦片載入器子節點的作用
目標:(十二)中的問題21 在rex引擎的setMap中建立了分頁瓦片載入器子節點 osgEarthDrivers/engine_rex/RexTerrainEngineNode.cpp void RexTerrainEngineNode::setMap(const Map* map, co
osgEarth的Rex引擎原理分析(十九)request請求載入瓦片優先順序的含義
目標:(十七)中的問題40 這要先從TileNode的load說起,它會計算出一個priority,但這個優先順序還不是request的優先順序 osgEarthDrivers/engine_rex/TileNode.cpp void TileNode::load(Terr
osgEarth的Rex引擎原理分析(十七)瓦片請求的生成到處理過程詳解
目標:(十六)中問題38 瓦片請求的大概過程是這樣的: 1、osgEarth::Drivers::RexTerrainEngine::TileNode在渲染遍歷時產生LoadTileData請求,將請求傳遞給DatabsePager改造成DatabaseRequest請求後,將此請求放入了D
osgEarth的Rex引擎原理分析(十五)分頁瓦片載入器在更新遍歷時對請求處理過程
目標:(十四)中的34 osgEarthDrivers/engine_rex/Loader.cpp void PagerLoader::traverse(osg::NodeVisitor& nv) { for(count=0; count < _merges
osgEarth的Rex引擎原理分析(十六)請求合併佇列_mergeQueue
目標:(十四)中的33 請求合併佇列_mergeQueue是在幀迴圈的更新遍歷時構建的。這個是有分頁資料庫DatabasePager的更新遍歷實現的,而不是依靠場景樹節點的更新遍歷。 osgEarthDrivers/engine_rex/Loader.cpp bool PagerLoa
osgEarth的Rex引擎原理分析(十八)瓦片節點TileNode的建立過程
目標:(十七)中問題39 TileNode::create呼叫的時機有兩種:(1)頂層瓦片建立時;(2)子瓦片需要建立時 該函式主要做以下工作: 1、設定成員變數_context,記錄rex引擎的上下文環境 2、設定本級瓦片的_key 3、建立遮罩生成器osgEarth::Dri