OSG 数据预加载

osg 默认数据是被cull到,才会加载的,如果需要在程序启动时就加载,但启动后并不一定需要看到该模型,这种需求,怎么实现? 


        查了大量资料,还是国外的OpenSceneGraph论坛比较强大,有人问到,国内论坛已经死掉了,不再维护。大致的解决方法,就是使用osgUtil::IncrementalCompileOperation,来预编译资源。


大体步骤:

1. 从Viewer获取 osgUtil::IncrementalCompileOperation的指针:

 osgUtil::IncrementalCompileOperation* pIcompOperation = viewer.getIncrementalCompileOperation();

2. 创建 创建compileSet:

osg::ref_ptr<osgUtil::IncrementalCompileOperation::CompileSet> compileSet = osgUtil::IncrementalCompileOperation::CompileSet(NODE,true);

3. 从CompileCompletedCallback派生新类,然后重写Completed函数,在内部隐藏节点:

4. 将 派生类 绑定到 compileSet。

compileSet->compileSet->_compileCompletedCallback =  newCompileCompletedCallback;

5. 设置 IncrementalCompileOperation 过期策略

pIcompOperation->setCompileAllTillFrameNumber(50);



猜你喜欢

转载自blog.csdn.net/kasteluo/article/details/80457799