首页 / Cesium / 使用示例
规模与帧率测试
数据一多,先看帧率再看效果。示例在两百米尺度上铺六百栋建筑,把性能压力摆在明面上。
源码与运行效果
这个示例在做什么
六百栋建筑铺满约两公里的范围,左上角实时显示帧率。旋转、缩放时可以直观看到 实体数量对帧率的影响,也能判断设备承受的规模上限。
压力测试关心三件事:每帧的 CPU 提交量、GPU 绘制批次、以及瓦片调度开销。
实体的瓶颈多在 CPU:每个实体都要计算包围体与矩阵。3D Tiles 则把压力转移到
瓦片调度,用 maximumScreenSpaceError 控制细节层级,
值调大能显著提升帧率。
关键接口
| 接口 | 作用 |
|---|---|
tileset.maximumScreenSpaceError | 容忍的屏幕误差,越大越省性能 |
tileset.maximumMemoryUsage | 瓦片内存上限,控制缓存规模 |
scene.postRender | 统计帧率与渲染耗时的挂载点 |
viewer.scene.debugShowFramesPerSecond | 内置帧率面板,排查时更省事 |
可以直接改的地方
| 位置 | 改什么 | 效果 |
|---|---|---|
COUNT = 600 | 改成 3000 | 观察帧率掉落 |
box.outline | 打开描边 | 绘制批次增加,帧率下降 |
material | 换成半透明 | 透明排序带来额外开销 |
把 postRender 换成 requestAnimationFrame | — | 统计口径变为浏览器帧率 |
替代说明:官方示例用多份 ion 数据集做规模与帧率的对照测试。
这里生成 600 个实体承载压力,统计方式与调参思路一致;
真实场景改用 tileset 后,主要调 maximumScreenSpaceError。