void OsgWidget::loadOsg(QString osgFilePath)
{
_pViewer->setSceneData(osgDB::readNodeFile(osgFilePath.toStdString()));
}
bool OsgWidget::saveNode(osg::ref_ptr<osg::Node> pNode, QString fileName)
{
return osgDB::writeNodeFile(*pNode.get(), fileName.toStdString());
}
- osgDB/readFile:osg所有读取磁盘文件函数都在此头文件中
-
osg打开文件是依据后缀名打开的,使用不同的打开函数返回不同的数据类型指针,文件名参数中可以包含绝对路径或者相对路径。
- 如果用户指定了绝对路径, OSG 将到指定的位置去搜索文件。
- 如果用户制定了相对路劲或者不包含路径,OSG将使用osgDB的数据文件路径表来搜索文件,用户可以通过设置环境变量 OSG_FILE_PATH 来设置这个目录列表。
-
要添加指定的数据目录到数据文件路径表,可以使用
osgDB::Registry::getDataFilePathList()
函数。osgDB::Registry是一个单态类(singleton),因此要调用这个函数的话,需要使用单态类的实例。函数会返回一个 osgDB::FilePathList 的指针,也就是一个简单的 std::dequestd::string。假如要从一个字符串 newpath 中添加目录到列表的话,可以使用下面的代码:osgDB::Registry::instance()->getDataFilePathList().push_back(newpath);
-
如果因为某些原因, OSG 不能读取文件,那么这两个函数都会返回 NULL指针。要查看文件读取失败的原因的话,可以设置 OSG_NOTIFY_LEVEL 环境变量为一个较高的值(例如 WARN),然后再次尝试读取文件,并检查程序控制台输出的警告或者错误信息。
序号
函数
描述
1
readObjectFile
读取对象文件
2
readFile
读取文件
3
readImageFile
用于读取2D图像文件
4
readHeightFieldFile
5
readNodeFile
打开3D模型文件,后缀名为.osg
6
readNodeFiles
打开多个3D模型文件,后缀名为.osg
7
readShaderFile
读取着色器文件
8
readShaderFileWithFallback
9
readScriptFile
读取脚本文件
10
readRefObjectFile
11
readRefImageFile
12
readRefHeightFieldFile
13
readRefNodeFile
14
readRefShaderFile
15
readRefScriptFile
-
- osgDB/writeFile:osg所有保存磁盘文件函数都在此头文件中
序号
函数
描述
1
writeObjectFile
将对象写入文件
2
writeImageFile
将数据写入2D图形文件
3
writeHeightFieldFile
4
writeNodeFile
将数据写入3D模型文件
5
writeShaderFile
将着色器写入文件
6
writeScriptFile
将脚本写入文件