RangeMode PIXEL_SIZE_ON_SCREEN
首先我們看看原始數據的構成:
第12層:(第一層)
第23層:(最后一層)
pagelod下面有N多的pagelod一層包裹一層
通過osgviewer遍歷時,會根據距離的遠近加載不同層級的“小瓦片”
可以看出其stateset和geode的數據量不小,而且通過pagelod不斷加載卸載,是變化的。這會導致大批量渲染時,加載卡頓(目前只是一小片測試)
如上圖圈出的部分會不斷變化。
下面開始我們的數據合並測試:
可以明顯的看到GPU爆了,原因有兩點:
1.我將幾百MB的數據都加進的內存和顯存顯示
2.我將幾百張圖片作為紋理列表添加進一個stateset,並通過着色器選擇渲染紋理
如果僅顯示22層和23層:
以下是合並完的23層數據格式:
計划前20層所有瓦片自動合並到1個lod,從第20層開始進行四叉樹分級:
20層 4個lod
21層 16個lod
22層 64個lod
23層 放棄
進行嘗試
先用21層做四叉樹嘗試:
在21層所有頂點和圖片資源都和在一個節點的情況下,用osg渲染的幀數是150,見下圖
但是,做了一次四叉樹轉換,將21的所有頂點和圖片資源分成四個節點后,幀數提升到了1558,見下圖
其他相關參考: