[原][osg]osgconv浅析

查看osgconv.cpp

main函数在533行

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

//........一堆功能不管,先看一下文件读写
  
  FileNameList fileNames;
for(int pos=1;pos<arguments.argc();++pos) { if (!arguments.isOption(pos)) { fileNames.push_back(arguments[pos]); } } std::string fileNameOut("converted.osg"); //写出文件的名字,如果有多余两个的模型参数,则用最后一个名字作为写入模型的名字,把前面所有模型参数合并 if (fileNames.size()>1) { 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());
原文地址:https://www.cnblogs.com/lyggqm/p/9133638.html