查看: 1767|回复: 4

怎样保存渲染目标的图像到一个文件?

[复制链接]

该用户从未签到

发表于 2009-11-11 12:06:53 | 显示全部楼层 |阅读模式
渲染到纹理的时候,我将camera绑定了一个image,并且成功渲染到了一个模型的纹理上。
但我该如何将这个image保存成一个图片文件呢?

我将这个camera设置了一个osg::Camera:rawCallback;
并进行了如下操作:
//设置回调
camera->setPostDrawCallback(new MyCameraPostDrawCallback(image));

//每一次调用都保存
virtual void operator () (const osg::Camera& /*camera*/) const
{
       osgDB::writeImageFile( *_image, "a.png");
}

可是保存的图片,却并不是实际的图像。请问这是什么原因?

该用户从未签到

发表于 2009-11-11 12:11:17 | 显示全部楼层
Camera::attach()绑定的图片不是立即就能够得到的,我个人的经验是需要至少两帧的时间:第1帧获取FBO,第2帧复制到图片。因此您的保存图片的函数也需要至少在绑定后2帧才可能有效

该用户从未签到

 楼主| 发表于 2009-11-11 13:00:33 | 显示全部楼层
可是我运行了十几秒,还是没有得到啊

该用户从未签到

发表于 2009-11-11 13:06:05 | 显示全部楼层
那说明您的代码本身存在问题

该用户从未签到

 楼主| 发表于 2009-11-11 13:12:53 | 显示全部楼层
终于找出来原因了,我的image格式是GL_FLOAT,应该设置成GL_UNSIGNED_BYTE才能正确的保存成图片
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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