查看: 1636|回复: 1

添加fbo相机后,切换输入法,程序出错

[复制链接]

该用户从未签到

发表于 2011-8-12 11:11:06 | 显示全部楼层 |阅读模式
同时按下ctrl和shift键(或者鼠标点击切换输入法)时,虽然图形还在刷新,但不接受事件(模型控制不了,程序中其他按钮点击无反应),
发现是由于添加了fbo相机,但只在控件或MFC中出现,控制台中不出现,为什么?

以下是在项目OsgActiveX的ViewGraphicsInit.cpp中添加fbo相机的代码:
  1. // 同时按下ctrl和shift键(或者鼠标点击切换输入法)时,虽然图形还在刷新,但不接受事件(模型控制不了,程序中其他按钮点击无反应),
  2. // 由于添加了fbo相机,但只在控件或MFC中出现,控制台中不出现,为什么?
  3. osg::Camera* createFBO( osg::Camera* camera )
  4. {
  5.         osg::ref_ptr<osg::Camera> fbo = new osg::Camera;

  6.         fbo->setClearColor( camera->getClearColor() );
  7.         fbo->setClearMask( GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT );
  8.         fbo->setReferenceFrame( osg::Transform::ABSOLUTE_RF );
  9.         fbo->setRenderOrder( camera->getRenderOrder(), camera->getRenderOrderNum()+1 );
  10.         fbo->setRenderTargetImplementation( osg::Camera::FRAME_BUFFER_OBJECT );
  11.         osg::Viewport* vp = camera->getViewport();
  12.         fbo->setViewport( vp->x(), vp->y(), vp->width(), vp->height() );

  13.         return fbo.release();
  14. }

  15. bool ViewGraphicsInit::setSceneData(const string& fileName)
  16. {
  17.         OpenThreads::ScopedLock<OpenThreads::Mutex> slock(m_mutex);
  18.         osg::Node* node = osgDB::readNodeFile(fileName);
  19.         if ( node )
  20.         {
  21.                 osg::Camera* camera = createFBO( m_refViewer->getCamera() );
  22.                 camera->addChild( node );

  23.                 osg::Group* root = new osg::Group;
  24.                 root->addChild( node );
  25.                 root->addChild( camera ); // 去掉本行,不添加fbo相机没问题

  26.                 m_refViewer->setSceneData( root );
  27.                 return true;
  28.         }
  29.         return false;
  30. }
复制代码
以下是程序压缩包:
OsgActiveX.rar (521.39 KB, 下载次数: 134)

该用户从未签到

发表于 2011-8-12 12:31:36 | 显示全部楼层
我以前也遇到过类似的问题,切换输入法就崩溃,后来装了新的显卡驱动就好了,莫名其妙,你也可以试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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