|
本帖最后由 spiritkay 于 2010-7-22 11:15 编辑
我需要生成一个二进制记录文件,用来保存场景数据,场景里面含有图片。
我不想记录完还要附带一些图片文件,希望能将图片数据同时保存在这个二进制文件中。
我现在想到的方法是:
osg::ref_ptr<osg::Image> image = new osg::Image();
image = osgDB::readImageFile(“test.bmp”);
if(image)
{
unsigned char* code = image->data();
std:fstream fou("code", std::ios::binary);
fou<<code;
fou.close();
}
但是再从code这个文件读回数据就有问题了。
osg::ref_ptr<osg::Image> image = new osg::Image();
std::ifstream fin(“code”, std::ios::binary);
if(fin.good())
{
std::string value = "";
std::getline(fin, value);
unsigned char* code = (unsigned char*)value.data();
image->allocateImage(512,512,1, GL_RGB,GL_UNSIGNED_BYTE);
image->setImage(512,512,1, GL_RGB,GL_RGB,GL_UNSIGNED_BYTE,code,osg::Image::USE_NEW_DELETE);
}
fin.close();
这个读进来的数据生成的image加到纹理里面就出异常。
osgDB::writeImageFile(*image, "i.bmp");这样输出也不行,出异常。
上面的参数应该是没有错的,不知道是不是这样输出到文件再读进来是不行的。
请大虾指点。 |
|