osgEarth的Rex引擎原理分析(一)地球初始化

本文深入剖析osgEarth的Rex引擎,从地球初始化开始,详细阐述osgDB的读取调用链条,包括地图图层和节点的构建。同时,探讨了osgEarth的插件化加载机制,以及osg如何根据文件扩展名选择动态链接库。后续将分析更多关键步骤,如动态库加载、.earth文件解析等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析Rex引擎的起点,要从下面代码开始(或者其它类似)。

osg::Node* node = MapNodeHelper().load(arguments, &viewer);

 它会解析earth文件,搭建起地球的四梁八柱框架,接下来的帧循环会围绕这个框架进行影像、高程瓦片的调度。

这个函数会启动一个读取调用链条(中间省略一些不重要的链条节点)

osgDB::readRefNodeFile

osgDB::Registry::read

osgDB::Registry::ReadNodeFunctor::doRead

ReaderWriterEarth::readNode

osgEarth_osgearth::EarthFileSerializer2::deserialize

至此读取链条就以结束,接下来就是osgEarth_osgearth::EarthFileSerializer2::deserialize的操作了,这里主要做两件事

1、构建地图图层

osgEarthDrivers/earth/EarthFileSerialize2.cpp
osg::Node*
EarthFileSerializer2::deserialize( const Config& conf, const std::string& referrer ) const
{
    osg::ref_ptr< Map > map = new Map( mapOptions );
    map->beginUpdate();
    ...
    map->endUpdate();
}

2、构建地图节点

osgEarthDrivers/earth/
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值