1. 程式人生 > >OSG 資料預載入

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);