UNPKG

modern-canvas

Version:

A JavaScript WebGL rendering engine. only the ESM.

45 lines (44 loc) 1.67 kB
import type { BufferLike, GeometryAttributeLike, TextureLike } from '../shared'; import type { GlDrawOptions } from './geometry'; import type { GlRenderer } from './GlRenderer'; import { GlBlendMode, GlState } from './state'; import { GlSystem } from './system'; export interface Batchable2D { vertices: Float32Array; indices: Uint32Array; uvs?: Float32Array; size?: { width: number; height: number; }; texture?: TextureLike; blendMode?: GlBlendMode; roundPixels?: boolean; clipOutsideUv?: boolean; } interface Shader { update: (bufferData: BufferLike['data'], indexBufferData: BufferLike['data']) => void; draw: (options?: GlDrawOptions) => void; } export declare class GlBatch2DSystem extends GlSystem { install(renderer: GlRenderer): void; protected _state: GlState; protected _batchSize: number; protected _batchables: Batchable2D[]; protected _vertexCount: number; protected _indexCount: number; protected _attributeBuffer: ArrayBuffer[]; protected _indexBuffers: Uint32Array<ArrayBuffer>[]; protected _shaders: Map<number, Shader>; protected _attributes: Record<string, Partial<GeometryAttributeLike>>; protected _vertexSize: number; protected _getShader(maxTextureUnits: number): Shader; protected _createShader(maxTextureUnits: number): Shader; render(batchable: Batchable2D): void; flush(): void; protected _getBufferData(size: number): ArrayBuffer; protected _getIndexBufferData(size: number): Uint32Array<ArrayBuffer>; } export declare function nextPow2(v: number): number; export declare function log2(v: number): number; export {};