查看: 1495|回复: 1

osg中如何读取raw高程图

[复制链接]

该用户从未签到

发表于 2012-9-3 22:18:35 | 显示全部楼层 |阅读模式
如题,我想读取一张高程图并设为一张二维纹理。通过了以下的代码实现,但未能得到效果。表现的问题为贴图没有显示。想请教下代码,下面的代码是否有问题:

        float *data1 = new float[256*64*3];
        FILE *f1 = fopen("transmittance.raw", "rb");
        fread(data1, 1, 256*64*3*sizeof(float), f1);
        fclose(f1);

               osg::ref_ptr<osg::Image> image2 = new osg::Image;
        osg::Texture2D *transmittanceTex = new osg::Texture2D;

transmittanceTex->setFilter(osg::Texture::MIN_FILTER,osg::Texture:INEAR);
        transmittanceTex->setFilter(osg::Texture::MAG_FILTER,osg::Texture::LINEAR);
        transmittanceTex->setWrap(osg::Texture::WRAP_S,osg::Texture::CLAMP_TO_EDGE);
        transmittanceTex->setWrap(osg::Texture::WRAP_T,osg::Texture::CLAMP_TO_EDGE);

        image2->setImage(256,64,0,GL_RGB,GL_RGB32F_ARB,GL_FLOAT,(unsigned char*)data,osg::Image::USE_NEW_DELETE);
    transmittanceTex->setInternalFormat(GL_RGB);
        transmittanceTex->setImage(image2.get());

        ss->setTextureAttributeAndModes(2,transmittanceTex);
        delete[] data1;

              osg::Uniform* transmittanceTexUniform = new osg::Uniform("transmittanceSampler",2);
              ss->addUniform(transmittanceTexUniform);


transmittance.raw

192.02 KB, 下载次数: 2, 下载积分: 威望 1

该用户从未签到

发表于 2012-9-6 17:17:36 | 显示全部楼层
贴图没有显示是否是您的纹理坐标没有指定,或者shader不正确所致?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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