之前基于1.99版本写了一套插件,最近想替换成目前的新版本(114),发现有很多写法都不能用了,这里做一下记录。
- 100版本发布了
@cesium/engine
,@cesium/widgets
,引用方式上就会有些变化; - 102版本默认采用了webgl2,如果不支持则会回退到webgl1。这样牵扯了很多shader中的用法,比如片元着色器中的
varing
改成in
,gl_FragColor
改成out_FragColor
,texture2D
改成texture
等,如果不想用webgl2,可以用以下方式:
const viewer = new Viewer("cesiumContainer", {contextOptions: {requestWebgl1: true,},
});
- 104版本开始弃用
readyPromise
,3dtiles的加载方式也发生了变化,Cesium3DTileset
不能被直接实例化,而是采用Cesium3DTileset.fromUrl. 加载gltf模型也发生了变化。
// 加载3dtiles
try {const tileset = await Cesium.Cesium3DTileset.fromUrl(url);viewer.scene.primitives.add(tileset);
} catch (error) {console.log(`Failed to load tileset: ${error}`);
}// 加载gltf/glb
try {const model = await Cesium.Model.fromGltfAsync({url: "../../SampleData/models/CesiumMan/Cesium_Man.glb",});viewer.scene.primitives.add(model);model.readyEvent.addEventListener(() => {// model is ready for rendering});
} catch (error) {console.log(`Failed to load model. ${error}`);
}
- 104版本中,
imageryProvider
也被删除,改用baseLayer
代替;地形加载方式也有了新的变化。
try {const viewer = new Cesium.Viewer("cesiumContainer", {terrainProvider: await Cesium.createWorldTerrainAsync(),baseLayer: new Cesium.ImageryLayer(new Cesium.UrlTemplateImageryProvider({url: "http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",maximumLevel: 16,})),});
} catch (error) {console.log(`Failed to created terrain: ${error}`);
}
- 109版本中,Firefox 114 现在是运行 CesiumJS 所需的最低 Firefox 版本,为了方便Web Worker加载并删除过时的依赖项。
- 110版本中,
Cesium3DTileset.maximumMemoryUsage
被删除,使用Cesium3DTileset.cacheBytes
和Cesium3DTileset.maximumCacheOverflowBytes
代替。 - 114版本中,默认情况下,屏幕空间相机控制器将不再进入Cesium3DTileset;默认启用
Cesium3DTileset.dynamicScreenSpaceError
来进行场景优化,可以提高水平方向上加载的性能。