import { IComputeManagerInterface } from './ComputeManagerInterface'; export interface IVTBuffers { vertex: WebGLBuffer; texture: WebGLBuffer; } export interface ICanvas2DWithContext { canvas: HTMLCanvasElement; context: CanvasRenderingContext2D; } export interface ICanvasGLWithContext { canvas: HTMLCanvasElement; context: WebGLRenderingContext; } /** * Manages WebGL contexts and textures */ export declare class ComputeManagerPrivate implements IComputeManagerInterface { /** * Default vertex and texture buffers */ protected defaultBuffers: IVTBuffers; /** * Shared canvas used for converting images to pixels. */ protected sharedCanvas2D: ICanvas2DWithContext; /** * Shared canvas to perform shader operations. */ protected sharedCanvasGL: ICanvasGLWithContext; /** * List of input textures. */ protected inputTextures: any[]; /** * List of shader programs */ protected shaderPrograms: { [id: string]: (WebGLProgram | Promise); }; /** * Default shader program */ protected defaultProgram: WebGLProgram; constructor(); createCanvas2D(): ICanvas2DWithContext; createCanvasGL(): ICanvasGLWithContext; gl(): WebGLRenderingContext; /** * Returns an image containing raw pixel data given an image or video element */ imageToPixels(image: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): ImageData; createTexture(width: number, height: number): WebGLTexture; createFrameBuffer(texture: WebGLTexture): WebGLFramebuffer; imageDataToWebGLTexture(imageData: ImageData, texture: WebGLTexture): void; /** * Converts an image to an input texture, which can be used * in the initial stage of a shader. */ htmlElementToWebGLTexture(element: HTMLElement, texture: WebGLTexture): void; activateShader(program: WebGLProgram, width: number, height: number): void; setShaderInput(inputId: number, input: WebGLTexture): void; setShaderOutput(output: WebGLFramebuffer): void; runShader(): void; /** * Run a shader */ applyShader(input: WebGLTexture, program: WebGLProgram, output: any, width: number, height: number): void; associcateTextureUnit(program: WebGLProgram, name: string, unit: number): void; setUniform(program: WebGLProgram, name: string): WebGLUniformLocation; setUniformi(program: WebGLProgram, name: string, value: number): void; setUniformf(program: WebGLProgram, name: string, value: (number | number[])): void; /** * Renders a texture to a canvas and returns the canvas. * The canvas should be used immediately. */ textureToCanvas(texture: WebGLTexture, width: number, height: number): HTMLCanvasElement; webGLTextureToImageData(texture: WebGLTexture, imageData: ImageData): void; createShaderProgram(id: string, vertex: string[], fragment: string[]): Promise; }