查看: 4612|回复: 8

osg离屏渲染问题

[复制链接]

该用户从未签到

发表于 2011-1-12 17:11:37 | 显示全部楼层 |阅读模式
我想实现离屏渲染,将场景直接渲染至位图,opengl的代码我有,但osg里面就是无从下手,请高手指教,脱离屏幕的话是不是不要用viewer,而且我想知道osg里面最后是哪个函数执行了GLFlush?

该用户从未签到

发表于 2011-1-13 08:43:20 | 显示全部楼层
有很多种方案可以实现离屏渲染,osgprerender,osgposter都是您可以参考的例子。RTT的功能已经完整地封装在OSG的核心中了

该用户从未签到

 楼主| 发表于 2011-1-13 11:16:03 | 显示全部楼层
我只想将场景脱离viewer渲染至图片中,osg这些例子也忒繁了,opengl只要关联内存就行,有没有简单的方法?array帮我指点一下大概步骤吧,要由源码更感激不尽

该用户从未签到

发表于 2011-1-13 13:31:06 | 显示全部楼层
基本的实现还是非常简单的,我想您只要稍作了解就能够明白,基本步骤也就是:
1、构建一个空纹理
2、构建一个使用attach()与纹理绑定的Camera,并指定渲染到纹理的方法(RenderTargetImplementation)
3、将准备渲染到纹理的场景addChild给Camera
4、将纹理赋给另外的对象,或者直接输出到图像

该用户从未签到

 楼主| 发表于 2011-1-13 13:56:13 | 显示全部楼层
我能否不通过纹理,类似opengl直接将内存dc与osg挂接,然后直接画到内存,并输出为图片

该用户从未签到

发表于 2011-1-13 16:07:51 | 显示全部楼层
那么可以在Camera的PostDrawCallback中调用readPixels将场景输出为纹理和图片,osgautocapture是这样一个例子,不过效率显然会低一些

该用户从未签到

 楼主| 发表于 2011-1-13 16:32:27 | 显示全部楼层
这样的话,我如何不要调用viewer->run()

该用户从未签到

发表于 2011-1-14 08:25:23 | 显示全部楼层
您不妨先看一下osgautocapture这个例子,它就提供了不调用viewer.run()即可运行的机制

该用户从未签到

发表于 2011-1-14 15:58:52 | 显示全部楼层
这个例子还真没注意
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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