查看: 1267|回复: 3

MFC结合OSG中添加事件处理器出错

[复制链接]

该用户从未签到

发表于 2013-3-26 14:59:14 | 显示全部楼层 |阅读模式
class SwitchViewEyeHandler:public osgGA::GUIEventHandler
{
public:
        SwitchViewEyeHandler()
        {
                iNum=0;
                ViewPoint=new osg::Vec3Array();
        }
        ~SwitchViewEyeHandler(){}
        bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa)
        {
               
//                 if (viewer==NULL)
//                         return false;

                switch(ea.getEventType())
                {
                case(osgGA::GUIEventAdapter::KEYDOWN):
                        {
                                osg::ref_ptr<osgViewer::Viewer>viewer=dynamic_cast<osgViewer::Viewer*>(&aa);
                                viewer->getCamera()->getViewMatrixAsLookAt(position,center,up);       

                                if (ea.getKey()=='a')//a
                                {
                                        //ViewPoint->push_back(position);
                                        //ViewPoint->push_back(center);
                                        //ViewPoint->push_back(up);                                
                                        iNum+=1;
                                }
                                        }
                        break;
                default:
                        break;
                }
                return true;
        }
        public:
        osg::Vec3 position,center,up;
        osg::Vec3 position1,center1,up1;
        osg::ref_ptr<osg::Vec3Array>ViewPoint;
        int iNum;

};



在MFCosg.cpp中的void MFCosg::InitCameraConfig(void){}中添加事件处理器
mViewer->addEventHandler(new SwitchViewEyeHandler());
出现如下图的错误:
错误.jpg

该用户从未签到

发表于 2013-3-26 15:09:25 | 显示全部楼层
本帖最后由 liuzhiyu123 于 2013-3-26 15:10 编辑

猜不出来问题在哪里.......为什么我用qt+osg也是多线程 就没有出现过这些问题,而是用MFC的却这么容易出错呢?

该用户从未签到

发表于 2013-3-26 15:40:11 | 显示全部楼层
我想您有别的地方错误地调用过代码,比如删除了一个场景节点却完全没有考虑多线程渲染的特性等

该用户从未签到

 楼主| 发表于 2013-3-26 17:28:59 | 显示全部楼层
array 发表于 2013-3-26 15:40
我想您有别的地方错误地调用过代码,比如删除了一个场景节点却完全没有考虑多线程渲染的特性等

只是使用简单的MFC_OSG,没有删除节点等其他的操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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