osgEarth的Rex引擎原理分析(十六)请求合并队列_mergeQueue

本文深入探讨了osgEarth中分页数据库DatabasePager的工作原理,特别是请求合并队列_mergeQueue的构建过程。从TileNode在渲染阶段产生请求,到DatabaseThread处理并放入_dataToMergeList,再到更新遍历时加入_mergeQueue,最后瓦片分页加载器处理这些请求。文章总结了这一系列流程,并预告将详细讲解相关细节。
摘要由CSDN通过智能技术生成

目标:(十四)中的33

请求合并队列_mergeQueue是在帧循环的更新遍历时构建的。这个是有分页数据库DatabasePager的更新遍历实现的,而不是依靠场景树节点的更新遍历。

osgEarthDrivers/engine_rex/Loader.cpp
bool
PagerLoader::addChild(osg::Node* node)
{
    osg::ref_ptr<RequestResultNode> result = dynamic_cast<RequestResultNode*>(node);

    Request* req = result->getRequest();

    _mergeQueue.insert( req );
                    
}

那么,分页数据库DatabasePager又是如何知道要往请求合并队列_mergeQueue添加哪些请求呢。在分页数据库DatabasePager的addLoadedDataToSceneGraph中有(这个函数是在更新遍历DatabasePager中调用的):

osgDB/DatabasePager.cpp
void DatabasePager::addLoadedDataToSceneGraph(const osg::FrameStamp &frameStamp)
{
    _dataToMergeList->swap(localFileLoadedList);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值