[原][osg]osgconv浅析

时间:2023-12-06 15:47:02

查看osgconv.cpp

main函数在533行

  osg::ArgumentParser arguments(&argc,argv);

//........一堆功能不管,先看一下文件读写
  
  FileNameList fileNames; for(int pos=;pos<arguments.argc();++pos)
{
if (!arguments.isOption(pos))
{
fileNames.push_back(arguments[pos]);
}
} std::string fileNameOut("converted.osg");
//写出文件的名字,如果有多余两个的模型参数,则用最后一个名字作为写入模型的名字,把前面所有模型参数合并
if (fileNames.size()>)
{
fileNameOut = fileNames.back();
fileNames.pop_back();
}
  osg::ref_ptr<osg::Node> root = osgDB::readRefNodeFiles(fileNames);
//....中间root被各种自定义的节点访问器读取,修改等操作,如下: 
/*
if (pruneStateSet)
{
PruneStateSetVisitor pssv;
root->accept(pssv);
}
*/ //保存
  osgDB::ReaderWriter::WriteResult result = osgDB::Registry::instance()->writeNode(*root,fileNameOut,osgDB::Registry::instance()->getOptions());