查看: 1526|回复: 1

MFC下OSG交互的问题

[复制链接]

该用户从未签到

发表于 2013-1-1 13:02:54 | 显示全部楼层 |阅读模式
Array的书里有一段这样的有关交互的代码 除了这里的旋转之外 我还在交互的内容里加入自己定义的别的函数
在控制台下运行起来没有问题
但是在MFC下 由于自己定义的函数需要写进类里 所以在这里不知道如何实现 求大神指导
     class ModelController : public osgGA::GUIEventHandler
     {
     public:
         ModelController( osg::MatrixTransform* node )  
     : _model(node)  
     {}  
         virtual bool handle( const osgGA::GUIEventAdapter& ea,
                              osgGA::GUIActionAdapter& aa );
         
     protected:
         osg::ref_ptr<osg::MatrixTransform> _model;
     };
   
     bool ModelController::handle( const osgGA::GUIEventAdapter& ea,
                                   osgGA::GUIActionAdapter& aa )
     {
         if ( !_model ) return false;
         osg::Matrix matrix = _model->getMatrix();
         
         switch ( ea.getEventType() )
         {
         case osgGA::GUIEventAdapter::KEYDOWN:
             switch ( ea.getKey() )
             {
             case 'a': case 'A':
                 matrix *= osg::Matrix::rotate(-0.1f, osg::Z_AXIS);
                 break;
             case 'd': case 'D':
                 matrix *= osg::Matrix::rotate(0.1f, osg::Z_AXIS);
                 break;
             case 'w': case 'W':
                 matrix *= osg::Matrix::rotate(-0.1f, osg::X_AXIS);
                 break;
             case 's': case 'S':
                 matrix *= osg::Matrix::rotate(0.1f, osg::X_AXIS);
                 break;
             default:

                     break;
                 }
                 _model->setMatrix( matrix );
                 break;
             default:
                 break;
             }
             return false;
         }

无标题.jpg

该用户从未签到

发表于 2013-1-4 09:38:12 | 显示全部楼层
如果您用单线程,那么直接将执行代码放在MFC的事件回调中就可以了;如果是多线程的模式,那么可能要考虑command buffer这样的方式来保证安全的交互
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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