如何直接将Texture对象保存成图像
最后的一帧中有这么一句话:可将纹理对象texture与场景绘制的帧缓存绑定在一起。我们既可以将texture的内容保存成图片,作为场景的截图
现在正好用到这个功能,只想把当前反射相机中的内容保存出来,而不是全部的场景内容,不知道怎么实现,非常感谢! 你是说和截图一样的功能吗 和截图类似,不过只要一个特定相机的渲染内容存成图片
就是rrt中的纹理 本帖最后由 gis_wudi 于 2012-8-15 17:51 编辑
如下图,texture已经关联了一个相机,并获取了颜色缓存进行了渲染,现在想把texture直接存储成图片(也就是矩形框上的内容),而不是全部的场景内容
明白你说的意思了!坐等解决方案 Image可以关联到Camera,这时设置camera的setRenderTargetImplementation就行了。它保存的Image也就是当前摄像机所对应的视野之内的东西 本帖最后由 gis_wudi 于 2012-8-16 09:54 编辑
可以关联到Camera,这时设置camera的setRenderTargetImplementation就行了。它保存的Image也就是当前摄像机所对应的视野之内的东西
谢谢您的提示,我没有看attach接口就直接来发帖了,现把调用代码贴出来,希望对以后类似需求的人能有所帮助
直接将image对象关联到相机上即可
包括截屏都可以
g_Image = new osg::Image;
viewer->getCamera()->attach(osg::Camera::COLOR_BUFFER, g_Image.get());
同时加了一个handler来做键盘响应,用以将image存成图片
if(ea.getKey() == 'p')
{
osgDB::writeImageFile(*g_Image, "capture.bmp");
}
这是主相机,相当与截屏了
如果是其他的渲染相机,同理,直接attach就可以了
发现这个截屏都不需要在camera的回调中做
下图是关联一个rtt相机存储后的图片
g_Image = new osg::Image;
rrtCamera->attach(osg::Camera::COLOR_BUFFER, g_Image.get());
本帖最后由 gis_wudi 于 2012-8-16 10:00 编辑
我的最终目的是用来显示给任意一个模型的轮框线
当然用shader方式也可以达到这个目的,但没有设计好shader的具体实现,感觉效果不尽人意,只能现权宜一下了
感谢楼主分享 楼主,对于rrt相机,用attach到图片后,得到的图片没有数据?请问您也是这样的嘛
页:
[1]