查看: 2317|回复: 2

如何使用FBO方式截图保存含有backGroundGeode节点背景?

[复制链接]

该用户从未签到

发表于 2013-3-6 17:37:24 | 显示全部楼层 |阅读模式
本帖最后由 CWorld 于 2013-3-6 17:41 编辑

问题描述:

   在使用FBO方式截图, 关联FBOCamera渲染到Frame Object buffer, 一般情况我们指定了 FBOCamera的RenderOrder为
PreRender
   对于backGroudGeode节点(背景图),比如我们渲染图像的背景为一幅画面,我们使用BackCamera进行实现,指定渲染顺序为ReaderOrder为 PostRender。

   因为两个相机的渲染顺序不一致,所以导致截图无法保存BackGroudGeode节点的信息?

   场景的组织为如下,其中Scene为正常场景,
                                    Root
                                  /       |             \
                                 /        |              \
                   FBOCamera    Scene            BackGroudCamera
                          /                                    \
                          /                                     \
                     Scene                              BackGroudGeode


   请问如何能使用FBO方式截图保存含有backGroundGeode节点背景? 请大牛指点?

以下是我自己的分析与疑问:

1: 第一种方式,考虑使用FBOCamera->addChild(backGroudCamera) ? ,这个经过我的测试,似乎会死机。
2: 第二种方法, 把背景节点的内容backGroudGeode的内容,加入到FBOCamera中, 即 FBOCamera->addChild(BackGroudGeode), 这种似乎也不可行
3:  第三种方法: 增加了一个FBOCamera,提前渲染背景,并将背景渲染到FBO上,即通过指定
     FBOCamearFirst和FBOCamera的SetRenderOrder来控制顺序,并且相机都Attach到帧缓冲区中,不过这种方法还是失败了。

                                          Root

                     /                /                  |             \
                    /                 /                 |               \
      FBOCameraFirst        FBOCamera    Scene            BackGroudCamera
                 /                   /                                    \
                /                      /                                     \      
      BackGroudGeode         Scene                              BackGroudGeode


请问大牛,这种情况,该如何处理呢? 首先是我必须要使用FBO截图,因为我需要截取的图像格式是32位float类型,但是我又必须要截取背景图像?

   感觉这种情况,用OpenGL是可以实现的?到了OSG以后,就无法转换为比较合理的代码逻辑了?



该用户从未签到

发表于 2013-3-7 07:59:50 | 显示全部楼层
第二种不行 很可能是你的camera的viewmatrix设置的不对,这样背景就看不到了

该用户从未签到

发表于 2013-3-8 14:30:37 | 显示全部楼层
您要做的事情是怎样的?截取场景内容作为背景图?那样的话您不用考虑这两件事情在一帧里的顺序问题。因为把上一帧FBO的图作为下一帧渲染的背景图也是完全正确的做法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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