|
将模型导入系统进行渲染,再执行场景保存操作,出现纹理丢失的问题,参照论坛中的锐神给的思路及威哥给的提示,在模型加载时添加上下面这一句
osgUtil::Optimizer::TextureVisitor mTexture(true,false, false,false, false,1.0);
mModel->accept(mTexture);
再次感谢威哥等的帮助!
完整模型加载函数如下:
void ViewRender::importSingleData( std::string filename )
{
//取得文件父路径
std::string m_filePath=osgDB::getFilePath(filename);
osgDB::FilePathList m_filePathList=osgDB::Registry::instance()->getDataFilePathList();
m_filePathList.push_back(m_filePath);//设置文件路径
osgDB::Registry::instance()->setDataFilePathList(m_filePathList);
mModel = osgDB::readNodeFile(filename);
mModel->setName(filename);
osgUtil::Optimizer optimizer;
optimizer.optimize(mModel.get());
optimizer.reset();
osgUtil::Optimizer::TextureVisitor tv(true,false, false,false, false,1.0);
mModel->accept(tv);
//添加孩子
mRoot->addChild(mModel.get());
} |
|