查看: 1914|回复: 5

使用两个漫游器后,检测碰撞时出现内存访问冲突?求解!

[复制链接]

该用户从未签到

发表于 2011-12-8 19:24:03 | 显示全部楼层 |阅读模式
各位,我往view里面加了一个带碰撞检测的漫游器1,程序运行正常。检测的部分代码:

osg::Vec3 newPos = m_Position + delta;
osgUtil::IntersectVisitor ivr;
osg::ref_ptr<osg:ineSegment> line = new osg::LineSegment(newPos,m_Position);
iv.addLineSegment(lineZ.get());
m_node ->accept(iv);// m_node是场景根结点

后来又用KeySwitchMatrixManipulator的方式添加了一个漫游器2(不带碰撞检测的,只是设置相机位置)。
再次运行程序,默认用的是漫游器1,运行正常,切换到漫游器2也正常。再次切换回漫游器1的时候
这时候程序运行到
m_node ->accept(iv);
时内存访问错误,谁知道是怎么回事吗?

该用户从未签到

发表于 2011-12-12 12:07:50 | 显示全部楼层
m_node是否已经被释放?

该用户从未签到

 楼主| 发表于 2011-12-13 10:32:54 | 显示全部楼层
对不起,是内存访问冲突:读取位置 0x00000000 时发生访问冲突
应该没有释放啊,m_node是整个场景的根结点,在漫游器2里面也没有访问过这个结点。

该用户从未签到

发表于 2011-12-13 11:46:37 | 显示全部楼层
既然是地址0的问题,那么一定是访问了空指针,简单地调试一下堆栈就可以了

该用户从未签到

 楼主| 发表于 2011-12-13 15:30:55 | 显示全部楼层
是m_node在切换漫游器之后就变为空指针了,不知什么原因~~唉

该用户从未签到

发表于 2012-7-10 14:40:07 | 显示全部楼层
allenshen 发表于 2011-12-13 15:30
是m_node在切换漫游器之后就变为空指针了,不知什么原因~~唉

楼主这个问题有没有解决,我现在也是遇到同样的问题~~~求解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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