您现在的位置是:首页 >学无止境 >Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题网站首页学无止境

Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题

非科班Java出身GISer 2024-06-14 17:17:16
简介Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题

Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题

在公司内网服务器部署 Cesium 项目的时候,发现提示浏览器不支持 WebGL 错误,经尝试,确认 Cesium 1.101.0 以及之前的版本是可以正常显示的。

因此,是由于 Cesium 版本更新引起的,而 Cesium 在更新 1.102.0 的时候,WebGL 将默认使用 2 版本。

解决办法的话,经尝试,只能是降低版本

本文包括 系统环境版本、试错过程、解决问题 三部分。


系统环境版本

系统版本:windows 7

浏览器版本:Google Chrome x64 Stable 109.0.5414.120 Win7


试错过程

1. 尝试百度搜索的解决方法:

首先是通过设置浏览器参数:Chrome无法打开WebGL的解决方法

然后是开启 ignore-gpu-blocklist 以及硬件加速:chrome下旧显卡开启WebGLThe browser supports WebGL, but initialization failed

经尝试之后没生效,以下是初始错误:

在这里插入图片描述

2. 修改 requestWebgl1。理论上来讲,由于 webgl 版本问题的话,通过设置 cesium 默认使用 webgl1 即可。

const viewer = new Viewer("cesiumContainer", {
		navigationHelpButton:false,     //帮助信息
		      selectionIndicator:false, // 选择
		      imageryProvider: new window.Cesium.WebMapTileServiceImageryProvider({
		          //影像底图
		          url: "http://t{s}.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk="+token,
		          subdomains: subdomains,
		          layer: "tdtImgLayer",
		          style: "default",
		          format: "image/jpeg",
		          tileMatrixSetID: "GoogleMapsCompatible",//使用谷歌的瓦片切片方式
		          show: true
		      }),
		  // 指定上下文
		  contextOptions: {
		    requestWebgl1: true,
		  },
});

但是经过尝试,地图可以初始化成功,大部分功能可以使用,但是一些 着色器效果会报错

推测原因:由于 Cesium 高版本 GLSL 语法是 300 版本,但是 window 7 环境下支持的谷歌浏览器版本低,不支持 GLSL 高版本语法。

在这里插入图片描述

解决问题

Cesium 降版本,经测试,1.101.0 及以前版本。

降低版本后
在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。