WebGIS使用WebGL在MapboxGL上渲染DEM三维空间数据WebGL的3D数据渲染的demo。首先看一下MapboxGL的GLGS到层的结构:一般是先把WebGl的Shader代码放到Painter中(WebGL的Context就在这个对象中),然后通过Source层加载处理需要的数据(包括Vector和栅格数据),通过Tile对象将数据传入Render,做一些WebGL数据处理和渲染,然后扔进Tile传给Layer层,最后管理一些样式和事件。MapboxGL基本上说了这么多,下面是WebGL的3D数据处理渲染和添加卫星图像纹理的过程(代码太多,只写一些关键步骤代码):第一步:获取需要渲染的数据块(tileformat)//序列化tile地址,计算数据tile的xyz坐标leturl=normalizeURL(tile.coord.url(this.tiles,null,this.scheme),this.url,this.tileSize);...//Ajax请求获取二进制数据格式MapboxGl封装获取二进制数据tile.request=ajax.getArrayBuffer(url,done.bind(this));...//将数据转码处理成aJS对象并将其传递给tiletile.pixelObj=pixelObj;//处理后的数据...第二步:在Render中获取数据和Painter渲染数据块:constdivisions=257;letvertexPositionData=newFloat32Array(divisions*divisions*3);constpixels=pixelObj.pixels[0];if(coord.vertexPositionData){//缓存优化console.log('cache','coord');vertexPositionData=coord.vertexPositionData;}else{console.time('顶点');//完整数据量for(leti=0;i
