查看: 680|回复: 2

第二次贴图为乱码

[复制链接]

该用户从未签到

发表于 2016-11-23 22:41:04 | 显示全部楼层 |阅读模式
采用一个图片对模型进行贴图,结果是正确的。程序不关,在对另外一个模型也采用图片进行贴图,显示的结果就是错的了。哪位大神清楚啊?



//创建二维纹理状态对象
osg::ref_ptr<osg::StateSet> createTexture2DState(std::string filename,int texture_unit)
{
        osgDB::Options  *a = NULL;
        osg::ref_ptr<osg::Image> image=osgDB::readRefImageFile((filename).c_str(),a);
        //创建状态集对象
        osg::ref_ptr<osg::StateSet> stateset = new osg::StateSet();
        //创建二维纹理对象
        osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D();
       
        texture->setDataVariance(osg::Object:YNAMIC);
        //设置贴图
        texture->setImage(image.get());
        texture->setTextureWidth(image->s());
        texture->setTextureHeight(image->t());
        stateset->setTextureAttributeAndModes(texture_unit,texture.get(),osg::StateAttribute::ON);
        osg::ref_ptr<osg::TexEnv> texenv=new osg::TexEnv;
        texenv->setMode(osg::TexEnv::REPLACE);               
        stateset->setTextureAttributeAndModes(texture_unit,texenv.get(),osg::StateAttribute::ON);
        osg::Texture::WrapMode textureWrapMode;
        textureWrapMode =osg::Texture::REPEAT;
        texture->setWrap(osg::Texture2D::WRAP_R, textureWrapMode);
        texture->setWrap(osg::Texture2D::WRAP_S, textureWrapMode);
        texture->setWrap(osg::Texture2D::WRAP_T, textureWrapMode);
        stateset->setTextureAttributeAndModes( texture_unit, texture,osg::StateAttribute::ON );
        return stateset.get();
}

//中函数中调用方法
               osg::ref_ptr<osg::Texture2D> texture1=new osg::Texture2D;
                theMesh1->setTexCoordArray(0,texcoords1.get());
                theMesh1->setStateSet(createTexture2DState(imagefilepath,0));
                geode1->setName(imagefilepath);
                geode1->addDrawable(theMesh1);       

第二次纹理错误

第二次纹理错误

第一次纹理正确

第一次纹理正确

该用户从未签到

 楼主| 发表于 2016-11-23 22:42:22 | 显示全部楼层
QQ:1528325437

该用户从未签到

 楼主| 发表于 2016-11-23 23:35:28 | 显示全部楼层
怎么每个人回复下呢????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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