WebGLCustomLayerOptions
interface WebGLCustomLayerOptions {
animation?: boolean;
attributes?: WebGLCustomLayerAttributes;
draw?: WebGLCustomLayerDraw;
fragmentShader: string;
indices?: ArrayLike<number>;
maxZoom?: number;
minZoom?: number;
onDestroy?: (ctx: CustomRenderContext) => void;
onError?: (error: WebGLCustomLayerError) => void;
onReady?: (ctx: CustomRenderContext) => void;
onRender?: (ctx: CustomRenderContext) => void;
opacity?: number;
referCenter?: Point;
renderStage?: RenderStage;
renderState?: WebGLCustomLayerRenderState;
textures?: WebGLCustomLayerTextures;
uniforms?: WebGLCustomLayerUniforms;
unsafeGL?: boolean;
vertexShader: string;
vertices?: WebGLCustomLayerVertices;
visible?: boolean;
zIndex?: number;
}
animation?: boolean;
attributes?: WebGLCustomLayerAttributes;
draw?: WebGLCustomLayerDraw;
fragmentShader: string;
indices?: ArrayLike<number>;
maxZoom?: number;
minZoom?: number;
onDestroy?: (ctx: CustomRenderContext) => void;
onError?: (error: WebGLCustomLayerError) => void;
onReady?: (ctx: CustomRenderContext) => void;
onRender?: (ctx: CustomRenderContext) => void;
opacity?: number;
referCenter?: Point;
renderStage?: RenderStage;
renderState?: WebGLCustomLayerRenderState;
textures?: WebGLCustomLayerTextures;
uniforms?: WebGLCustomLayerUniforms;
unsafeGL?: boolean;
vertexShader: string;
vertices?: WebGLCustomLayerVertices;
visible?: boolean;
zIndex?: number;
}
属性
是否每帧自动重绘并推进 u_time。不需要动画就别开 —— 地图渲染线程本来会睡,默认值:false
顶点属性
绘制指令。没给 onRender 时图层按它自动画一次
片元着色器源码,必填
索引数据,给了就走 drawElements。普通数组按 Uint16Array 处理
最大显示缩放等级,默认值:21
最小显示缩放等级,默认值:3
图层销毁时回调
着色器编译失败、纹理加载失败时回调
着色器编译通过、声明式资源就绪时回调
每帧绘制回调。不给则按 draw 描述自动画一次
透明度,取值范围 0 - 1。着色器里声明 uniform float u_opacity 即可消费,默认值:1
图层参考中心点,决定图层局部坐标的原点。强烈建议传 —— 顶点是 float32,绝对墨卡托坐标量级 1e7 会丢精度
绘制阶段,取值见 RenderStage
渲染状态
纹理
uniform 值
是否把原生 WebGL 上下文交给回调。开启后 ctx.gl 不再是白名单门面,
图层会在回调前后做完整的状态保存 / 恢复,但视口、framebuffer、pixelStorei
这类状态无法穷举,出现底图渲染异常请先关掉,默认值:false
顶点着色器源码,必填
交错顶点缓冲,与 attributes 可同时使用
是否显示,默认值:true
显示层级,小的先画,默认值:1
WebGLCustomLayer构造函数options参数