目标:(十四)中的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);