查看: 1119|回复: 0

立体模式下的抓图

[复制链接]

该用户从未签到

发表于 2014-12-8 13:14:50 | 显示全部楼层 |阅读模式

  大家好,
我一直在尝试osg立体模式下同时抓取左右眼的图片。结果老是不对。

参照论坛上早期的帖子,写了一个类class TestCameraCallBack:public osg::CameraDrawCallback.
其中关键函数,void operator() (osg::RenderInfo &renderInfo) const
(取王老师解答帖子精华http://bbs.osgchina.org/forum.php?mod=viewthread&tid=2374
基本步骤是这样的:
void operator() (osg::RenderInfo &renderInfo) const
{
if(capture)//通过事件触发开关
{
//期望读取左眼颜色缓存
renderInfo.getCurrentCamera()->setrReadBuffer(GL_BACK_LEFT);
imageL->allocateImage(width,height,1,GL_RGBA,GL_UNSIGNED_BYTE);
  imageL->readPixels(0,0,width,height,GL_RGBA,GL_UNSIGNED_BYTE);
  osgDB::writeImageFile(*imageL,"F:\\L1.png");

  //然后是右眼
renderInfo.getCurrentCamera()->setrReadBuffer(GL_BACK_RIGHT);
imageR->allocateImage(width,height,1,GL_RGBA,GL_UNSIGNED_BYTE);
  imageR->readPixels(0,0,width,height,GL_RGBA,GL_UNSIGNED_BYTE);
  osgDB::writeImageFile(*imageR,"F:\\R1.png");
}
}
  通过事件来开关capture,实现抓图(主要是测试能不能读,效率问题暂时先放一下)。
主程序能正常显示QUAD_BUFFER时的立体效果。但是抓下来的左右眼图却是一样的。
(肉眼看左右眼图片完全没有重影,也通过QUAD显卡带的立体视频播放器验证的)。

请各位路过的大牛提携。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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