本文时在osgEarth earth文件到地球的创建---(1)的基础上,进一步讲解MapNode的创建过程。
本文通过代码的介绍,讲解在osgEarth中,MapNode的创建过程以及MapNode的子节点和traverse函数的内容。
内容
osg::Node*
EarthFileSerializer2::deserialize(
const Config& const_conf,
const std::string& referrer,
const osgDB::Options* readOptions) const
{
......
......
......
MapNode::Options mapNodeOptions( conf.child("options") );
// Create a map node.
osg::ref_ptr<MapNode> mapNode = new MapNode( map.get(), mapNodeOptions );
// Apply the external conf if there is one.
if (!externalConfig.empty())
{
mapNode->externalConfig() = externalConfig;
}
// Install the
本文深入探讨了osgEarth中的MapNode创建,包括由osgEarth::Map构造MapNode,添加extension,以及MapNode的构造函数、Open()函数和traverse()函数的作用。MapNode含有四个子节点,并在Open()过程中创建OverlayDecorator和TerrainEngineNode。traverse()函数处理不同类型的Visitor,避免节点优化。
订阅专栏 解锁全文
1139

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



