1、程序初始化时
构建基础的图形节点
2、更新遍历时(updateTraversal)
加载请求的图形节点到场景树中
通过调用DatabasePager.cpp中的addLoadedDataToSceneGraph函数实现,需要添加的节点存放在_dataToMergeList列表中
3、渲染遍历时(renderingTraversals)
请求新的图形节点,并将请求交给dabasepager的请求队列_fileRequestQueue(文件加载地理信息)或_httpRequestQueue(网络加载地理信息)
4、dabasepager线程运行时
处理3中图形节点请求(主要是从文件、网络、缓存中读取地理信息),形成请求列表_dataToMergeList,在更新遍历时由2处理该请求列表
//DatabasePager.cpp
755:osg::ref_ptr<DatabaseRequest> databaseRequest;
756:read_queue->takeFirst(databaseRequest);
//......从文件、网络、缓存中读取地理信息
972:databaseRequest->_loadedModel = loadedModel;
990:_pager->_dataToMergeList->addNoLock(databaseRequest.get());