如何从.ive文件中提取 纹理image
//node = osgDB::readNodeFile("D:\\share\\terrain\\terrain.ive");osg::Node *node = osgDB::readNodeFile("D:\\d.ive");
TextureVisitor textureTV;
node->accept( textureTV );
std::map<std::string, osg::Image*> imageList = textureTV.getImages();
std::map<std::string, osg::Image*>::iterator iter = imageList.begin();
unsigned int cnt = 0;
char* buffer = new char;
for( ;iter != imageList.end(); iter++ )
{
sprintf(buffer, "d:\\TextureImage%d.bmp", cnt++ );
std::string str = iter->first;
osg::Image* img = iter->second;
unsigned int aaa = img->getTotalSizeInBytes();
aaa = img->getPixelSizeInBits();
osgDB::writeImageFile(*(iter->second), buffer);
}
其它代码类似OSG编程入门指南6.2.4
读入.osg文件时可以正确取得,但是读入.ive文件就不行(获取图像不正确 有哪位知道原因吗? 编写访问器,,进行遍历~~~~~ 已经编写的访问器,并且可以成功获取.osg文件中的纹理图片。但是加载.ive文件获取不了。
请高手指教 谢谢 先使用osgDB另存为osg文件 再导出图片能行吗? >先使用osgDB另存为osg文件 再导出图片能行吗?
=>这是一个方法 但是这样做不怎么好 影响性能啊。
有哪位高手直接从.ive获取过纹理图片吗? 请赐教 我不知道您的TextureVisitor的具体内容是什么,因此无法判断您用了什么方法来获取ive文件中的图片。一般来说,由于ive是压缩格式,图片数据已经保存为Image对象,因此我们可以从Texture对象的getImage()中得到图片数据并提取。
此外,您的问题应该和GIS/VPB没有直接关系,因此建议您今后把类似的问题发在主讨论区,不然我个人和其他一些朋友可能不会立即注意到,多谢理解。 我就是学习的《OSG编程入门指南 》上纹理节点访问的例子 ,ive格式的提取不出纹理来啊,
osg::Texture2D对象——getImage()
跟ive生成时选择的压缩方式有关吗?
不压缩生成ive可以获取到纹理的
--compressed ……就不行了 书中的例子不可能考虑到各个方面,只是提供一种可行的方案或者方法,您根据您的具体应用可以修改~~~这里需要您重写一下遍历器的纹理获取和存储方式即可~~~~~~·
页:
[1]