modern-canvas
Version:
A JavaScript WebGL rendering engine. only the ESM.
30 lines (29 loc) • 1.36 kB
TypeScript
import type { BufferLike, GeometryLike, Topology } from '../../shared';
import type { GlRenderer } from '../GlRenderer';
import type { GlProgram } from '../shader';
import { GlSystem } from '../system';
export interface GlDrawOptions {
topology?: Topology;
size?: number;
start?: number;
instanceCount?: number;
}
export declare class GlGeometrySystem extends GlSystem {
protected _geometryVaoHash: Record<number, Record<string, WebGLVertexArrayObject>>;
hasInstance: boolean;
current: GeometryLike | null;
currentVao: WebGLVertexArrayObject | null;
install(renderer: GlRenderer): void;
bind(geometry: GeometryLike | null, program?: GlProgram): void;
protected getVao(geometry: GeometryLike, program: GlProgram): WebGLVertexArrayObject;
protected _getBuffers(geometry: GeometryLike): BufferLike[];
protected _ensureAttributes(geometry: GeometryLike, program: GlProgram, buffers: BufferLike[]): void;
protected _createVao(geometry: GeometryLike, program: GlProgram): WebGLVertexArrayObject;
protected _activateVao(geometry: GeometryLike, glProgram: GlProgram): void;
updateBuffers(): void;
protected _getSignature(geometry: GeometryLike, program: GlProgram): string;
unbind(): void;
getSize(geometry: GeometryLike): number;
draw(options?: GlDrawOptions): this;
reset(): void;
}