天天看點

地形LOD動态加載分頁排程實作思路

一. 非海量地形坐标資料 + 海量分塊地形紋理資料 解決方案:

多線程加載,可以考慮一次性全部加載如記憶體或先加載部分資料到記憶體,然後啟動一個實時加載線程和實時解除安裝線程,實作分頁動态排程。

算法思路:

1. 在每幀渲染前調用一個判斷函數dynamic_precalc()

   【此函數主要實作: 根據目前相機位置确定地形渲染的LOD等級及此級下需要顯示的地塊編号,得到的LOD等級和地塊編号分别存儲在int ntempCurLod和vector<int> vectemplist中,然後比較目前幀使用的Lod等級和地塊編号,如果變化,計算需要加載和解除安裝的塊ID,将需要加載的塊ID加入加載隊列,需要解除安裝的塊ID加入解除安裝隊列,啟動或通知加載解除安裝線程開始工作,次序為先加載後解除安裝,防止出現“白塊”問題. 當加載完畢後,更新目前顯示地塊編号清單】

2. 輔助隊列【整型】 包括: 加載隊列loadQueue,  解除安裝隊列unloadQueue, 渲染隊列renderQueue (預加載隊列preloadQueue)