OpenSceneGraph | OSG如何存储带纹理osgb格式可以节省空间-CSDN博客中提到了,osbg的纹理存储设置其中:
options : WriteImageHint=<hint>导出选项:将图像写入流:
<IncludeData>直接写入Image::data();
<IncludeFile>将图像文件本身写入流;
<UseExternal>只写入文件名;
<WriteOut>将Image::data()作为外部文件写入磁盘。
因此可以在osgconv.exe测试,测试代码如下:
./osgconv.exe -O WriteImageHint=IncludeData Tile_+000_+000.osg Tile_+000_+000.osgb
./osgconv.exe -O WriteImageHint=IncludeFile Tile_+000_+000.osg Tile_+000_+000.osgb
./osgconv.exe -O WriteImageHint=UseExternal Tile_+000_+000.osg Tile_+000_+000.osgb
./osgconv.exe -O WriteImageHint=WriteOut Tile_+000_+000.osg Tile_+000_+000.osgb
经过测试UseExternal和 WriteOut 外部存放纹理文件,相比在osgb中存放纹理文件大小略小,因此可以在其中加入另一个参数 Compressor=zlib
经过如上测试,osgb文件的纹理存放及内存大小优化设置为:
./osgconv.exe -O WriteImageHint=UseExternal -O Compressor=zlib Tile_+000_+000.osg Tile_+000_+000.osgb