目标:(十四)中的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);
for(RequestQueue::RequestList::iterator itr=localFileLoadedLis

本文深入探讨了osgEarth中分页数据库DatabasePager的工作原理,特别是请求合并队列_mergeQueue的构建过程。从TileNode在渲染阶段产生请求,到DatabaseThread处理并放入_dataToMergeList,再到更新遍历时加入_mergeQueue,最后瓦片分页加载器处理这些请求。文章总结了这一系列流程,并预告将详细讲解相关细节。
请求合并队列_mergeQueue&spm=1001.2101.3001.5002&articleId=84195774&d=1&t=3&u=43b6bc52a2ae4a799a2a2ee35a6de553)
871

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



