查看: 1364|回复: 2

关于osgEarth::Map动态添加Elevation的问题。

[复制链接]

该用户从未签到

发表于 2017-2-13 16:35:47 | 显示全部楼层 |阅读模式
1.使用环境vs2013,osg3.4,oe2.8,mfc。
2.遇到的问题。
在osg初始化时加入空的osgEarth::MapNode节点(图片图层,高程数据都没有添加,即显示为白色的球)。osgEarth::Map 对象...;osgEarth::MapNode 对象...;
添加MFC菜单按钮,在菜单按钮里调用Map对象的addElevationLayer函数报错。错误的地点是addElevationLayer函数末尾的
for( MapCallbackList::iterator i = _mapCallbacks.begin(); i != _mapCallbacks.end(); i++ )
{
       i->get()->onMapModelChanged( MapModelChange(
              MapModelChange::ADD_ELEVATION_LAYER, newRevision, layer, index) );
}
这部分代码出错了。(根据调试出错在Group::traverse函数里报错。有个子对象的指针为空了(不知道为什么)?)。
但是,如果初始化的时候不加入MapNode节点,在MFC菜单按钮事件里
osgEarth::Map 对象....;
osgEarth::MapNode 对象...;
osgEarth::Map对象->addElevationLayer。就不会报错。

猜想是不是绘制线程与主线程引起的该错误。有没有朋友遇到过的或者知道怎么解决的。谢谢!

该用户从未签到

 楼主| 发表于 2017-2-13 17:42:37 | 显示全部楼层
有个办法能够解决掉,在渲染线程里使用一个全局变量来控制是否更新。开始加载模型的时候将变量设置为false,加载完模型后设置为true即可。这个方式应该是比较不专业的办法了,等过段时间研究了PageLOD后看能不能有更好的办法。
有更好办法的朋友请告知一声,小弟不胜感激。谢谢!

该用户从未签到

发表于 2017-6-6 17:18:30 | 显示全部楼层
楼主这么加载高程难道不会每加载一平方经纬度他就重新加载一次map么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表