查看: 1717|回复: 2

关于Trackball漫游器的一个老问题的解决

[复制链接]

该用户从未签到

发表于 2009-11-5 12:50:26 | 显示全部楼层 |阅读模式
我在使用trackball漫游器与qt结合时遇到的问题是osg视图会有一些错误的更新,追踪了一下源码,发现源码trackball漫游器中的handle函数中改成这样就可以了:
switch(ea.getEventType())
{
       case(GUIEventAdapter::Frame):
             {
                   if(calcMovement())
                     {
                           flushMouseEventStack();
                           us.requestRedraw();
                     }
              }
        return false;

        default:
              break;
}
我觉得在osg中使用trackball漫游器嵌入其他窗口时就容易出现这个问题,我使用的是2.2,不知道源码中不在每帧中使用flushMouseEventStack()是怎样的考虑?也希望出现与我类似问题的哥们也能够通过这段更改找到解决方法。

该用户从未签到

发表于 2009-11-5 13:58:45 | 显示全部楼层
我在Qt里使用Trackball没有发现什么明显的问题,不知道您这段代码是否是完整的,又或者您的OSG版本老了一些?
FRAME事件中通常只处理“抛出”的情形,也就是说,用户甩动鼠标键之后,场景的自动运动。如果此时flushMouseEventStack()的话,恐怕会造成这个机制失效

该用户从未签到

 楼主| 发表于 2009-11-5 22:49:35 | 显示全部楼层
谢谢array的回答,我的版本是2.2,不过我现在改过的这个漫游器正好适应我的需求,感觉有的东西还得具体问题具体分析了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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