查看: 2146|回复: 2

请教关于使用FBO相机与绑定浮点纹理的问题

[复制链接]

该用户从未签到

发表于 2011-3-12 18:27:37 | 显示全部楼层 |阅读模式
目前我通过自己的输入有一个Image对象,其中数据(RGBA)都为0.0~1600.0的浮点数,将其封装到一个纹理对象后,贴到一个平面上,并设置一个FBO相机关联到这个平面,将其COLOR_BUFFER再绑定到另一个Image对象中,但此时通过Image->data()独处的RGBA值都被截断在0.0~1.0之间了,请教一下各位老师,如何处理才能正确地得到正确的浮点值?

用代码的话就是上述流程吧,请指教~~谢谢!



  1. osg::Texture2D* tex=new osg::Texture2D;
  2. tex->setSourceFormat(GL_RGBA);
  3. tex->setSourceType(GL_FLOAT);
  4. tex->setInternalFormat(GL_RGBA32F_ARB);
  5. tex->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
  6. tex->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
  7. tex->setTextureSize(128,128);
  8. tex->setImage(imgSource);    //imgSource这是输入了正确浮点值的Image对象

  9. osg::Image* targetImg=new osg::Image;    //这是另一个新开辟的Image对象
  10. targetImg->allocateImage(128,128,1,GL_RGBA,GL_FLOAT);
  11. targetImg->setInternalTextureFormat(GL_RGBA32F_ARB);

  12. cam->attach(osg::Camera::COLOR_BUFFER,targetImg);

  13. //但是,最后这个targetImg得出的数据是被截断到0.0~1.0的

复制代码

该用户从未签到

发表于 2011-3-14 08:58:42 | 显示全部楼层
能否给出您的全部代码,这样也方便大家进行调试。从现有的代码中我看不出什么端倪

该用户从未签到

发表于 2012-4-13 00:41:22 | 显示全部楼层
OpenGL默认会对颜色进行clamp,所以你的浮点纹理数据是从0到1,加上这几句看看,
GLClampColor( GL_CLAMP_VERTEX_COLOR_ARB, GL_FALSE );
GLClampColor( GL_CLAMP_FRAGMENT_COLOR_ARB, GL_FALSE );
GLClampColor( GL_CLAMP_READ_COLOR_ARB, GL_FALSE );

是OpenGL的,应该有对应的osg代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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