osgQt窗口,操作器引用view导致的崩溃问题

在创建OSG窗口程序时,如果使用自定义操作器的话,一般会在操作器中引用view指针,这里可能会导致程序崩溃;

osgQt源码中,view定义为普通指针:

OSGRenderer* m_renderer {nullptr};

所以,在自定义操作器中,比如 handleMouseWheel(const GUIEventAdapter& ea, GUIActionAdapter& us) 事件中,将 us 强制转为 view 时,不能使用智能指针 osg::ref_ptr ,否则view 会被析构掉,进而导致程序崩溃,要使用普通指针类型:

osgViewer::View* view = dynamic_cast<osgViewer::View*>(&us);

以下操作,将导致程序崩溃

//    错误示例,源码view为普通指针,此处定义为智能指针,将导致view被析构
//
osg::ref_ptr<osgViewer::View> view = dynamic_cast<osgViewer::View*>(&us);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值