ogl-typescript
Version:
TypeScript port of OGL WebGL Library
120 lines (119 loc) • 3.66 kB
TypeScript
import { Transform } from './Transform';
import { Camera } from './Camera';
import { RenderTarget } from './RenderTarget';
export interface RendererOptions {
canvas: HTMLCanvasElement;
width: number;
height: number;
dpr: number;
alpha: boolean;
depth: boolean;
stencil: boolean;
antialias: boolean;
premultipliedAlpha: boolean;
preserveDrawingBuffer: boolean;
powerPreference: string;
autoClear: boolean;
webgl: number;
}
export declare type OGLRenderingContext = {
renderer: Renderer;
canvas: HTMLCanvasElement;
} & (WebGL2RenderingContext | WebGLRenderingContext);
export declare type DeviceParameters = {
maxTextureUnits?: number;
maxAnisotropy?: number;
};
export declare type RenderState = {
blendFunc?: {
src: GLenum;
dst: GLenum;
srcAlpha?: any;
dstAlpha?: any;
};
blendEquation?: {
modeRGB: GLenum;
modeAlpha?: any;
};
cullFace?: number;
frontFace?: number;
depthMask?: boolean;
depthFunc?: number;
premultiplyAlpha?: boolean;
flipY?: boolean;
unpackAlignment?: number;
viewport?: {
width: number | null;
height: number | null;
};
textureUnits?: Array<number>;
activeTextureUnit?: number;
framebuffer?: any;
boundBuffer?: any;
uniformLocations?: Map<number, WebGLUniformLocation>;
};
export declare type RenderExtensions = {
[key: string]: any;
};
export declare class Renderer {
dpr: number;
alpha: boolean;
color: boolean;
depth: boolean;
stencil: boolean;
premultipliedAlpha: boolean;
autoClear: boolean;
gl: OGLRenderingContext;
isWebgl2: boolean;
width: number;
height: number;
parameters: DeviceParameters;
state: RenderState;
extensions: RenderExtensions;
vertexAttribDivisor: Function;
drawArraysInstanced: Function;
drawElementsInstanced: Function;
createVertexArray: Function;
bindVertexArray: Function;
deleteVertexArray: Function;
drawBuffers: Function;
currentProgram: number;
currentGeometry: string | null;
get id(): number;
private _id;
constructor({ canvas, width, height, dpr, alpha, depth, stencil, antialias, premultipliedAlpha, preserveDrawingBuffer, powerPreference, autoClear, webgl, }?: Partial<RendererOptions>);
setSize(width: number, height: number): void;
setViewport(width: number, height: number): void;
enable(id: GLenum): void;
disable(id: GLenum): void;
setBlendFunc(src: GLenum, dst: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;
setBlendEquation(modeRGB: GLenum, modeAlpha: GLenum): void;
setCullFace(value: GLenum): void;
setFrontFace(value: GLenum): void;
setDepthMask(value: GLboolean): void;
setDepthFunc(value: GLenum): void;
activeTexture(value: number): void;
bindFramebuffer({ target, buffer }?: {
target?: number;
buffer?: any;
}): void;
getExtension(extension: string, webgl2Func?: keyof WebGL2RenderingContext, extFunc?: string): any;
sortOpaque(a: any, b: any): number;
sortTransparent(a: any, b: any): number;
sortUI(a: any, b: any): number;
getRenderList({ scene, camera, frustumCull, sort }: {
scene: Transform;
camera: Camera;
frustumCull: boolean;
sort: boolean;
}): any[];
render({ scene, camera, target, update, sort, frustumCull, clear, }: Partial<{
scene: Transform;
camera: Camera;
target: RenderTarget;
update: boolean;
sort: boolean;
frustumCull: boolean;
clear: boolean;
}>): void;
}