WebGLCustomLayerOptions

WebGLCustomLayer构造函数options参数

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;
}

属性

是否每帧自动重绘并推进 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