@lightningjs/renderer
Version:
Lightning 3 Renderer
137 lines (136 loc) • 8.03 kB
TypeScript
import type { Vec2, Vec3, Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
import type { CompressedData } from '../textures/Texture.js';
/**
* Abstract GL Context Wrapper
*
* @remarks
* This abstract class defines the interface for rendering context wrappers.
* Implementations should provide optimized state management and caching
* to avoid redundant API calls when the state is already set to the desired value.
*
* The interface is designed to be compatible with WebGL-like rendering contexts
* but can be adapted for other rendering backends (Canvas2D, WebGPU, Native, etc.).
*/
export declare abstract class GlContextWrapper {
abstract readonly canvas: HTMLCanvasElement | OffscreenCanvas;
abstract readonly MAX_RENDERBUFFER_SIZE: number;
abstract readonly MAX_TEXTURE_SIZE: number;
abstract readonly MAX_VIEWPORT_DIMS: number;
abstract readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number;
abstract readonly MAX_TEXTURE_IMAGE_UNITS: number;
abstract readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number;
abstract readonly MAX_VERTEX_ATTRIBS: number;
abstract readonly MAX_VARYING_VECTORS: number;
abstract readonly MAX_VERTEX_UNIFORM_VECTORS: number;
abstract readonly MAX_FRAGMENT_UNIFORM_VECTORS: number;
abstract readonly TEXTURE_MAG_FILTER: number;
abstract readonly TEXTURE_MIN_FILTER: number;
abstract readonly TEXTURE_WRAP_S: number;
abstract readonly TEXTURE_WRAP_T: number;
abstract readonly LINEAR: number;
abstract readonly LINEAR_MIPMAP_LINEAR: number;
abstract readonly CLAMP_TO_EDGE: number;
abstract readonly RGB: number;
abstract readonly RGBA: number;
abstract readonly UNSIGNED_BYTE: number;
abstract readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number;
abstract readonly UNPACK_FLIP_Y_WEBGL: number;
abstract readonly FLOAT: number;
abstract readonly TRIANGLES: number;
abstract readonly UNSIGNED_SHORT: number;
abstract readonly ONE: number;
abstract readonly ONE_MINUS_SRC_ALPHA: number;
abstract readonly VERTEX_SHADER: number;
abstract readonly FRAGMENT_SHADER: number;
abstract readonly STATIC_DRAW: number;
abstract readonly COMPILE_STATUS: number;
abstract readonly LINK_STATUS: number;
abstract readonly DYNAMIC_DRAW: number;
abstract readonly COLOR_ATTACHMENT0: number;
abstract readonly INVALID_ENUM: number;
abstract readonly INVALID_OPERATION: number;
abstract activeTexture(textureUnit: number): void;
abstract bindTexture(texture: any | null): void;
abstract texParameteri(pname: number, param: number): void;
abstract texImage2D(level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
abstract texImage2D(level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource | Uint8Array): void;
abstract compressedTexImage2D(level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data?: ArrayBufferView): void;
abstract pixelStorei(pname: GLenum, param: GLint | GLboolean): void;
abstract generateMipmap(): void;
abstract createTexture(): any;
abstract deleteTexture(texture: any | null): void;
abstract viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
abstract clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;
abstract clear(): void;
abstract setScissorTest(enable: boolean): void;
abstract scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
abstract setBlend(blend: boolean): void;
abstract blendFunc(src: GLenum, dst: GLenum): void;
abstract createBuffer(): any;
abstract arrayBufferData(buffer: any | null, data: ArrayBufferView, usage: GLenum): void;
abstract elementArrayBufferData(buffer: any | null, data: ArrayBufferView, usage: GLenum): void;
abstract vertexAttribPointer(buffer: any, index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void;
abstract deleteBuffer(buffer: any): void;
abstract createFramebuffer(): any;
abstract deleteFramebuffer(framebuffer: any | null): void;
abstract bindFramebuffer(framebuffer: any | null): void;
abstract framebufferTexture2D(attachment: GLenum, texture: any | null, level: GLint): void;
abstract createShader(type: number): any;
abstract compileShader(shader: any): void;
abstract attachShader(program: any, shader: any): void;
abstract linkProgram(program: any): void;
abstract deleteProgram(shader: any): void;
abstract getShaderParameter(shader: any, pname: GLenum): any;
abstract getShaderInfoLog(shader: any): string | null;
abstract createProgram(): any;
abstract getProgramParameter(program: any, pname: GLenum): any;
abstract getProgramInfoLog(program: any): string | null;
abstract shaderSource(shader: any, source: string): void;
abstract deleteShader(shader: any): void;
abstract useProgram(program: any | null, uniformLocations: Record<string, any>): void;
abstract getUniformLocations(program: any): Record<string, any>;
abstract getAttributeLocations(program: any): string[];
abstract getAttribLocation(program: any, name: string): number;
abstract getUniformLocation(program: any, name: string): any;
abstract enableVertexAttribArray(index: number): void;
abstract disableVertexAttribArray(index: number): void;
abstract uniform1f(location: string, v0: number): void;
abstract uniform1fv(location: string, value: Float32Array): void;
abstract uniform1i(location: string, v0: number): void;
abstract uniform1iv(location: string, value: Int32Array): void;
abstract uniform2f(location: string, v0: number, v1: number): void;
abstract uniform2fa(location: string, value: Vec2): void;
abstract uniform2fv(location: string, value: Float32Array): void;
abstract uniform2i(location: string, v0: number, v1: number): void;
abstract uniform2iv(location: string, value: Int32Array): void;
abstract uniform3f(location: string, v0: number, v1: number, v2: number): void;
abstract uniform3fa(location: string, value: Vec3): void;
abstract uniform3fv(location: string, value: Float32Array): void;
abstract uniform3i(location: string, v0: number, v1: number, v2: number): void;
abstract uniform3iv(location: string, value: Int32Array): void;
abstract uniform4f(location: string, v0: number, v1: number, v2: number, v3: number): void;
abstract uniform4fa(location: string, value: Vec4): void;
abstract uniform4fv(location: string, value: Float32Array): void;
abstract uniform4i(location: string, v0: number, v1: number, v2: number, v3: number): void;
abstract uniform4iv(location: string, value: Int32Array): void;
abstract uniformMatrix2fv(location: string, value: Float32Array): void;
abstract uniformMatrix3fv(location: string, value: Float32Array): void;
abstract uniformMatrix4fv(location: string, value: Float32Array): void;
abstract createVertexArray(): any;
abstract bindVertexArray(vertexArray: any | null): void;
abstract deleteVertexArray(vertexArray: any): void;
abstract drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void;
abstract drawArrays(mode: GLenum, first: GLint, count: GLsizei): void;
abstract getParameter(pname: GLenum): any;
abstract getExtension(name: string): any;
abstract getError(): number;
abstract checkError(operation: string): {
error: number;
errorName: string;
message: string;
} | null;
abstract uploadKTX(glw: GlContextWrapper, texture: WebGLTexture, data: CompressedData): void;
abstract uploadPVR(glw: GlContextWrapper, texture: WebGLTexture, data: CompressedData): void;
abstract uploadASTC(glw: GlContextWrapper, texture: WebGLTexture, data: CompressedData): void;
abstract isWebGl2(): boolean;
}