|
本帖最后由 tzmyf234 于 2012-9-4 11:46 编辑
我有一个ive格式的小建筑,里面贴了五张不同纹理,纹理是包含在模型内部的。现在我想把它们写出来,调用了遍历器,找到图片就写出来
- void ExportTexture::apply(osg::StateSet* state)
- {
- if(!state)
- return;
- for (int i = 0; i <state->getTextureAttributeList ().size() ; i++)
- {
- osg::Texture2D* pTex2D = NULL;
- if(pTex2D = dynamic_cast<osg::Texture2D*>(state->getTextureAttribute(i, osg::StateAttribute::TEXTURE)))
- {
- int num = pTex2D->getNumImages();
- if(num>0)
- {
- for(unsigned int i = 0;i<num;i++)
- {
- osg::ref_ptr<osg::Image> pImage = pTex2D->getImage(i);
- if(!pImage)
- return;
- ossimFilename name = pImage->getFileName();
- pImage->flipVertical();
- osgDB::writeImageFile(*pImage.get(),name);
- }
- }
- }
- }
- }
复制代码 可是有一张图片写出来总是错误的。重新说明一下~ ive模型本身查看的时候没有问题,将纹理导出来,模型也转换成osg格式,其他的则没有做任何修改。查看osg模型调用刚刚导出的图片,其中的一张纹理就错乱了,不太明白原因,只是读一下再写出来,其中会有什么错误发生吗,也不知道问题有没有说明白。请教高手帮忙,在下先谢谢了。
////我找了一个错误纹理的模型
G3002.ive
(395.47 KB, 下载次数: 4)
|
|