OSG 資料預載入
阿新 • • 發佈:2018-11-04
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);