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());

本文详细解析了三维地理信息系统中图形节点的加载流程,包括程序初始化时的基础图形节点构建,更新遍历时的图形节点加载与场景树整合,渲染遍历时的图形节点请求及数据库线程处理过程。
1361

被折叠的 条评论
为什么被折叠?



