1.使用entity绘制随机点
// 随机生成 1000 个点
const numPoints = 1000;for (let i = 0; i < numPoints; i++) {const lon = Math.random() * 360 - 180;const lat = Math.random() * 180 - 90;const height = 50000 + Math.random() * 5000;// 将点添加到 Cesium Viewer 中viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(lon, lat, height),point: {pixelSize: 8,color: Cesium.Color.GREEN,outlineColor: Cesium.Color.WHITE,}});
}// 调整视图到全球范围
viewer.zoomTo(viewer.entities);
可以看到,GPU占用率瞬间拉满:
2. 改为primitive绘制随机点
// 创建一个 PointPrimitiveCollection 来存放点
const pointCollection = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());// 随机生成 1000 个点
const numPoints = 1000;for (let i = 0; i < numPoints; i++) {// 随机生成经度 (-180 到 180) 和纬度 (-90 到 90)const lon = Math.random() * 360 - 180;const lat = Math.random() * 180 - 90;const height = 50000 + Math.random() * 5000;const position = Cesium.Cartesian3.fromDegrees(lon, lat, height);// 将点添加到 PointPrimitiveCollection 中pointCollection.add({position: position,pixelSize: 8,color: Cesium.Color.BLUE,});
}// 调整视图到全球范围
viewer.scene.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(0, 0, 30000000) // 飞到一个适合观察的高度
});
可以看到,GPU使用率一下子就低了下去,在60~70%之间上下浮动
3. 根本上解决问题,1000个点加载根本无需考虑优化,只要将独显应用上就OK了
可以看到我的GPU 0也就是集显占用率拉满了,而GPU 1独显一点没用上,因为一般只有玩游戏才会自动给你上独显,处理3D的话只能手动去设了
首先,桌面右键找到NVIDIA控制面板,点击打开
然后在 管理3D设置 全局设置中选择高性能NVIDIA处理器
或者在程序设置单独设置高性能也行,选择你常用的浏览器,我选择了chrome,一般只用它来做程序。
点击应用,就设置完毕了。
当然你以为这就完了吗?自然不是。
你还要在系统设置中搜索图形设置,点击进入。
当然你在开始里找到这里也可以,按步骤来:
点击你要设置高性能的应用,会展开选择按钮,点击选项,可以看到:
别让 Windows 决定,它不懂 3D ,选择高性能,点击保存。
重启chrome浏览器,使用entity绘制,可以明显发现,要了集显老命的渲染居然只需要独显耗费十分之一的功力,这不就完了嘛。
区区一千个点,优化毛线啊,丢给硬件就得了。