二者的优缺点
Primitive
Primitive更多的是面向图形开发人员的底层API,暴露最小限度的抽象,更多使用图形学术语,具有更大的灵活性
- 优势
1、绘制大量
Primitive时,可以将其合并为单个Geometry,减轻CPU负担,更好使用GPU,性能更好 2、Geometry和Appearance解耦,两者可独立修改,更加灵活 - 缺点:
用法复杂,使用
primitive就意味着需要编写更多代码,以及对图形学深入的了解
1、Entity 偏向数据,Primitive 偏向图形 Primitive 更底层
Entity
Entity 是更高级别的数据驱动API,它使用一致性设计的、高级别对象来管理一组相关性的可视化对象,其底层也是使用的 Primitive
- 优势 1、用法简单,可设置各种各样的附加属性
分别用 Entity 和 Primitive 方式绘制图形
let points = turf.randomPoint(10000, { bbox: [40, 20, 255, 60] });
let features = points.features;
let feature, geom, coordinates, position;
// 广告牌的可渲染集合
var billboards = viewer.scene.primitives.add(
new Cesium.BillboardCollection()
);
for (let i = 0; i < features.length; i++) {
feature = features[i];
geom = feature.geometry;
coordinates = geom.coordinates;
position = Cesium.Cartesian3.fromDegrees(
coordinates[0],
coordinates[1],
0
);
addEntities(position);
}
使用 Entity 绘制
function addEntities (position) {
viewer.entities.add({
position: position,
billboard: {
image: "./imgs/01.jpg",
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
},
});
}
浏览器内存消耗情况
使用 Primitive 绘制
这里使用 BillboardCollection 提升性能
function addPrimitive (position) {
billboards.add({
position: position,
image: './imgs/01.jpg',
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
})
}