widget.cpp:221:13: error: no member named 'setDatabasePager' in 'osgDB::Options'
时间: 2023-07-29 17:06:07 浏览: 157
3D-Tile 转换工具集
这个错误是由于您使用的 OSG 版本不支持 `setDatabasePager` 方法导致的。在 OSG 3.6.5 及更早版本中,`setDatabasePager` 方法并不存在。如果您使用的是这些版本的 OSG,可以考虑升级到 OSG 3.6.6 或更高版本,因为在这个版本中,`setDatabasePager` 方法被添加到了 `osgDB::Options` 类中。
如果您无法升级 OSG 版本,您可以考虑使用 OSG 3.6.5 及更早版本中的另一个异步加载模型的方法,在代码中手动创建 `osgDB::DatabasePager` 对象,并使用 `osgDB::Registry::instance()->setDatabasePager(pager.get())` 方法将其设置为全局的 DatabasePager 对象,如下所示:
```cpp
osg::ref_ptr<osgDB::DatabasePager> pager = new osgDB::DatabasePager;
osgDB::Registry::instance()->setDatabasePager(pager.get());
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("model.ive");
// 设置 LOD
osg::ref_ptr<osg::LOD> lod = new osg::LOD;
lod->addChild(node.get(), 0, 1000);
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(lod.get());
// 渲染场景
osgViewer::Viewer viewer;
viewer.setSceneData(root.get());
viewer.run();
```
这样,在调用 `osgDB::readNodeFile` 方法时,就会自动使用全局的 DatabasePager 对象进行异步加载模型数据。
阅读全文