osgDB.ExternalFileWriter是OpenSceneGraph中的一个类,用于将场景图或模型中的纹理、音频、字体、着色器等外部资源写入磁盘。
#include <osgDB/WriteFile>
#include <osgDB/ExternalFileWriter>
...
osgDB::ExternalFileWriter writer;
osgDB::writeNodeFile(*node, "model.osg", &writer);
OpenSceneGraph的场景图或模型中经常会包含一些外部资源文件,如纹理图片、音频文件、字体文件、着色器文件等,当保存场景图或模型时,这些外部资源文件也需要一同被保存。osgDB.ExternalFileWriter正是用于处理这个问题的类,它可以将场景图或模型中的外部资源文件一并写入磁盘,便于在其他场景中使用。
使用时,只需先创建一个osgDB.ExternalFileWriter对象,并在写入文件时将其传入writeNodeFile函数中即可。需要注意的是,每个外部资源在写入磁盘时都会生成一个独立的文件,写入后的文件名以原文件名和资源类型拼接而成,例如:texture.jpg、audio.wav等。
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgDB/ExternalFileWriter>
...
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("model.fbx");
osgDB::ExternalFileWriter writer;
osgDB::writeNodeFile(*node, "model.osg", &writer);
以上示例中,我们读取一个模型文件"model.fbx",并创建一个osgDB.ExternalFileWriter对象,然后将模型写入文件"model.osg"中,并将外部资源文件一同写入磁盘,方便在其他场景中使用。