查看: 1824|回复: 4

osg 多窗口立体问题

[复制链接]

该用户从未签到

发表于 2011-4-26 16:03:58 | 显示全部楼层 |阅读模式
各位好,我实现多窗口的时候。设置了立体后,所有的窗口都有立体。
我想问一下,我现在只想在主窗口有立体,其他的小窗口为非立体。请问该如何实现呢

该用户从未签到

发表于 2011-4-27 08:39:17 | 显示全部楼层
可以单独设置各个Camera或者View的DisplaySettings来实现不同窗口的立体或非立体显示

该用户从未签到

 楼主| 发表于 2011-4-27 12:41:38 | 显示全部楼层
回复 2# array
请帮我看一下
//初始化主视图
osg::ref_ptr<osg::Camera> cameraMaster = new osg::Camera ;

osg:isplaySettings* ds1 = cameraMaster->getDisplaySettings();
if (!ds1) ds1 = osg::DisplaySettings::instance();
if (ds1) ds1->setStereo(true);
ds1->setStereoMode(osg::DisplaySettings::VERTICAL_INTERLACE);//1立体
cameraMaster->setDisplaySettings(ds1);

//相机视口设置
cameraMaster->setViewport(new osg::Viewport(traits ->x, traits ->y, traits ->width, traits ->height));
cameraMaster->addChild(node1);


//初始化子视图
osg::ref_ptr<osg::Camera> leftViewer = new osg::Camera ;

osg::DisplaySettings* ds2 = leftViewer->getDisplaySettings();
if (!ds2) ds2 = osg::DisplaySettings::instance();
if (ds2) ds2->setStereo(true);
ds2->setStereoMode(osg::DisplaySettings::ANAGLYPHIC);//2立体
leftViewer->setDisplaySettings(ds2);

leftViewer->setViewport(new osg::Viewport((traits  ->width/4)*3-2,0, traits ->width/4, traits ->height/4));
GLenum bufferleft = traits ->doubleBuffer ? GL_BACK : GL_FRONT;
leftViewer->setDrawBuffer(bufferleft);
leftViewer->setReadBuffer(bufferleft);
leftViewer->addChild(node2);

root->addChild(cameraMaster);
root->addChild(leftViewer);
viewer.setSceneData(root);

这样执行的时候,两个窗口都是ANAGLYPHIC立体,而上面的立体VERTICAL_INTERLACE的设置没起到作用,子视图中立体设为false时,则两个视图都没立体。只有当子视图中的设置立体部分注释了,则整个场景都为VERTICAL_INTERLACE立体。好像是子视图中的设置覆盖了主视图中立体的设置
不知道为什么。。。。。。

该用户从未签到

发表于 2011-4-28 08:24:14 | 显示全部楼层
  1. if (!ds1) ds1 = osg::DisplaySettings::instance();
  2. ...
  3. if (!ds2) ds2 = osg::DisplaySettings::instance();
复制代码
我想您应该好好检查一下逻辑上的问题,我记得Camera默认是没有设置DisplaySettings对象的,这样您两次用到的都是同一个单态instance()对象,换句话说您的第二次修改总是会覆盖第一次的。请新建两个DisplaySettings对象并分别赋予Camera

该用户从未签到

发表于 2013-3-2 11:18:23 | 显示全部楼层
请问实现多窗体显示具体怎么实现的?谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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