osgEarth的rex地理引擎的工作原理

1、程序初始化时

构建基础的图形节点

 

2、更新遍历时(updateTraversal)

加载请求的图形节点到场景树中

通过调用DatabasePager.cpp中的addLoadedDataToSceneGraph函数实现,需要添加的节点存放在_dataToMergeList列表中

osgEarth的rex地理引擎的工作原理_第1张图片

3、渲染遍历时(renderingTraversals)

请求新的图形节点,并将请求交给dabasepager的请求队列_fileRequestQueue(文件加载地理信息)或_httpRequestQueue(网络加载地理信息)

osgEarth的rex地理引擎的工作原理_第2张图片

4、dabasepager线程运行时

处理3中图形节点请求(主要是从文件、网络、缓存中读取地理信息),形成请求列表_dataToMergeList,在更新遍历时由2处理该请求列表

//DatabasePager.cpp

755:osg::ref_ptr databaseRequest;

756:read_queue->takeFirst(databaseRequest);

//......从文件、网络、缓存中读取地理信息

972:databaseRequest->_loadedModel = loadedModel;

990:_pager->_dataToMergeList->addNoLock(databaseRequest.get());

你可能感兴趣的:(osgearth,地理信息gis)