import type { Matrix4InOut } from '../../core/util/mat4'; import type { Map } from '../../map'; import { MixinConstructor } from '../../core/Mixin'; import { VertexAttrib, TileImageBuffer, TileImageTexture, TileImageType, TileRenderingProgram, TileRenderingCanvas, TileRenderingContext } from '../types'; import { WithNull } from '../../types/typings'; /** * A mixin providing image support in WebGL env * @mixin ImageGLRenderable * @protected */ declare const ImageGLRenderable: (Base: T) => { new (...args: any[]): { gl: TileRenderingContext; canvas: TileRenderingCanvas; canvas2?: TileRenderingCanvas; _debugInfoCanvas?: TileRenderingCanvas; program?: TileRenderingProgram; _layerAlt: number; _layerAltitude: number; layer?: any; texBuffer?: TileImageBuffer; _debugBuffer?: TileImageBuffer; posBuffer?: TileImageBuffer; _imageBuffers?: TileImageBuffer[]; _buffers?: TileImageBuffer[]; _textures?: TileImageTexture[]; getMap?(): Map; /** * 绘制图片数据 * * @english * Draw an image at x, y at map's gl zoom * @param image * @param x x at map's gl zoom * @param y y at map's gl zoom * @param w width at map's gl zoom * @param h height at map's gl zoom * @param scale scale at map's gl zoom * @param opacity * @param debugInfo * @param baseColor */ drawGLImage(image: TileImageType, x: number, y: number, w: number, h: number, scale: number, opacity: number, resized: any, debugInfo?: string, baseColor?: number[]): void; /** * 绘制 debug 信息,包括边线和行列号 * @param uMatrix * @param x * @param y * @param w * @param h * @param debugInfo */ drawDebug(uMatrix: Matrix4InOut, x: number, y: number, w: number, h: number, debugInfo: string): void; /** * 构建瓦片顶点数据 * @param x * @param y * @param w * @param h * @param buffer */ bufferTileData(x: number, y: number, w: number, h: number, buffer?: TileImageBuffer): TileImageBuffer; /** * 对于需要两个 canvas 来绘制的图层我们需要重新创建一个 canvas * @english * Create another GL canvas to draw gl images * For layer renderer that needs 2 seperate canvases for 2d and gl */ createCanvas2(): void; /** * 创建 webgl 实例,优先使用 canvas2 * @english * Get webgl context(this.gl). It prefers canvas2, and will change to this.canvas if canvas2 is not created */ createGLContext(): void; /** * Resize GL canvas with renderer's 2D canvas */ resizeGLCanvas(): void; /** * Clear gl canvas */ clearGLCanvas(): void; disposeImage(image: TileImageType): void; _createTexture(image: TileImageType): TileImageTexture; /** * Get a texture from cache or create one if cache is empty */ getTexture(): WithNull; /** * Save a texture to the cache */ saveTexture(texture: TileImageTexture): void; /** * Load image into a text and bind it with WebGLContext * @param image */ loadTexture(image: TileImageType, resized?: boolean): TileImageTexture; /** * Get a texture from cache or create one if cache is empty */ getImageBuffer(): WithNull; /** * Save a texture to the cache * @param buffer */ saveImageBuffer(buffer: TileImageBuffer): void; /** * Load image into a text and bind it with WebGLContext * @returns */ loadImageBuffer(data: Float32Array | Int16Array, glBuffer: TileImageBuffer): TileImageBuffer; createImageBuffer(): TileImageBuffer; /** * remove all the resources and remove gl canvas */ removeGLCanvas(): void; /** * Create a WebGL buffer * @returns {WebGLBuffer} */ createBuffer(): TileImageBuffer; /** * Enable vertex attributes * @params attributes * @example * rendererr.enableVertexAttrib(['a_position', 3, 'FLOAT']); */ enableVertexAttrib(attributes: VertexAttrib): void; /** * Create the linked program object * @param vert a vertex shader program (string) * @param frag a fragment shader program (string) * @return created program object, or null if the creation has failed */ createProgram(vert: string, frag: string): TileRenderingProgram; /** * use the given program * @param {WebGLProgram} program */ useProgram(program: TileRenderingProgram): any; /** * 启用纹理采样器 * Enable a sampler, and set texture * @param sampler * @param texIdx id */ enableSampler(sampler: string, texIdx?: number): WebGLUniformLocation; _initUniforms(program: TileRenderingProgram, uniforms: string[]): void; _getUniform(program: TileRenderingProgram, uniformName: string): WebGLUniformLocation; set8(a0: number, a1: number, a2: number, a3: number, a4: number, a5: number, a6: number, a7: number): Float32Array; set8Int(a0: number, a1: number, a2: number, a3: number, a4: number, a5: number, a6: number, a7: number): Int16Array; }; } & T; export default ImageGLRenderable; export declare function isPowerOfTwo(value: number): boolean; export declare function floorPowerOfTwo(value: number): number; //# sourceMappingURL=ImageGLRenderable.d.ts.map