modern-canvas
Version:
A JavaScript WebGL rendering engine. only the ESM.
45 lines (44 loc) • 1.67 kB
TypeScript
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 {};