[原][osg][oe]分析一块倾斜摄影瓦片的数据
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,见下图
关于osgb每层rangelist的记录:
1
RangeList 2 {
0 26.1626
26.1626 3.40282e+38
}
14
RangeList 2 {
0 52.3253
52.3253 3.40282e+38
}
15
RangeList 2 {
0 104.651
104.651 3.40282e+38
}
16 RangeList 2 {
0 209.301
209.301 3.40282e+38
}
17
RangeList 2 {
0 418.602
418.602 3.40282e+38
}
18
RangeList 2 {
0 496.896
496.896 3.40282e+38
}
19
RangeList 2 {
0 500.398
500.398 3.40282e+38
}
20
RangeList 2 {
0 485.923
485.923 3.40282e+38
}
21
RangeList 2 {
0 486.847
486.847 3.40282e+38
}
其他相关参考: