查看: 1569|回复: 4

请教关于CompositeViewer的问题。

[复制链接]

该用户从未签到

发表于 2011-8-19 20:09:23 | 显示全部楼层 |阅读模式
在多窗口渲染程序中,希望通过控制标志位来实现view的添加和删除,
写了下面的代码,不过实现不了,开始只有一个view的情况下没问题,
不过当控制标志位变化以添加view的时候程序就处理不再渲染的状态,
跟死机了差不多,不知道为什么,请问这个应该怎么办,谢谢!
如下如示:

  1. osg::ref_ptr<osgViewer::CompositeViewer> comViewer2;
  2. osg::ref_ptr<osgViewer::Viewer> camView1 = new osgViewer::Viewer();
  3. osg::ref_ptr<osgViewer::Viewer> camView2 = new osgViewer::Viewer();
  4. osg::ref_ptr<osgViewer::Viewer> camView3 = new osgViewer::Viewer();
  5. osg::ref_ptr<osgViewer::Viewer> camView4 = new osgViewer::Viewer();
  6. comViewer2 = new osgViewer::CompositeViewer();
  7. comViewer2->setDataVariance(osg::Object::DYNAMIC);
  8. comViewer2->addView(mViewer);
  9. /*comViewer2->addView(camView1);
  10. comViewer2->addView(camView2);
  11. comViewer2->addView(camView3);
  12. comViewer2->addView(camView4);*/
  13. comViewer2->realize();
  14. while(!comViewer2->done())
  15. {
  16.   if(view_change)
  17.   {
  18.    add_view=!add_view;
  19.    if(add_view)
  20.    {
  21.     comViewer2->addView(camView1.get());
  22.     comViewer2->addView(camView2.get());
  23.     comViewer2->addView(camView3.get());
  24.     comViewer2->addView(camView4.get());
  25.    }
  26.    else
  27.    {
  28.     comViewer2->removeView(camView1.get());
  29.     comViewer2->removeView(camView2.get());
  30.     comViewer2->removeView(camView3.get());
  31.     comViewer2->removeView(camView4.get());
  32.    }
  33.    view_cahnge=false;
  34.   }
  35.         comViewer2->frame();
  36.     }
复制代码

该用户从未签到

发表于 2011-8-22 08:35:50 | 显示全部楼层
非常不建议动态的addView和removeView,除非您先停止所有的线程,然后再重新启动它们。建议考虑其它的方案例如动态管理多个camera

该用户从未签到

 楼主| 发表于 2011-8-22 10:21:12 | 显示全部楼层

  1.    comViewer->stopThreading();
  2.    comViewer->addView(mViewer);
  3.    comViewer->addView(camView1);
  4.    comViewer->addView(camView2);
  5.    comViewer->addView(camView3);
  6.    comViewer->addView(camView4);
  7.    comViewer->startThreading();
  8. 谢谢array!我回去试一下,还有请教一下,停止还重新开启线程像上面这样用对吗?
复制代码
回复 2# array

该用户从未签到

发表于 2011-8-23 08:08:55 | 显示全部楼层
也许有用,但是这样很不好,效率上影响比较大

该用户从未签到

发表于 2013-4-1 20:27:23 | 显示全部楼层
动态管理camera该如何做?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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