Handler
Source: Handler.ts:90
A WebGL handler for accessing low-level WebGL capabilities.
Constructor
new Handler(
canvasTarget: string | HTMLCanvasElement,
params?: Object,
): HandlerParameters
canvasTarget(string | HTMLCanvasElement) — Canvas element target. or undefined creates hidden canvas and handler becomes hidden.params(Object, optional) — Handler options:params.anisotropy(number, optional) — Anisotropy filter degree. 8 is default.params.width(number, optional) — Hidden handler width. 256 is default.params.height(number, optional) — Hidden handler height. 256 is default.params.extensions(Array.<string>, optional) — Additional WebGL extension list. Available by default: EXT_texture_filter_anisotropic.
Instance Methods
setFrameCallback(callback: function)
Sets animation frame function.
Parameters
callback(function) — Frame callback.
createEmptyTexture2DExt(
width?: number,
height?: number,
filter?: string,
internalFormat?: string,
param?: string,
levels?: number,
): WebGLTexture | null
Creates an empty immutable 2D texture (WebGL2).
Parameters
width(number, optional, default: 1) — Texture width in pixels.height(number, optional, default: 1) — Texture height in pixels.filter(string, optional, default: "\"NEAREST\"") — GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER value.internalFormat(string, optional, default: "\"RGBA8\"") — Sized internal format (e.g. "RGBA8", "RGBA16F", "R16F").param(string, optional, default: "\"CLAMP_TO_EDGE\"") — GL_TEXTURE_WRAP_S/T value.levels(number, optional, default: 1) — Number of mipmap levels (immutable storage).
Returns
WebGLTexture | null
createEmptyTexture2DArrayExt(
width?: number,
height?: number,
depth?: number,
filter?: string,
internalFormat?: string,
param?: string,
levels?: number,
): WebGLTexture | null
Creates an empty immutable 2D array texture (WebGL2).
Parameters
width(number, optional, default: 1) — Texture width in pixels.height(number, optional, default: 1) — Texture height in pixels.depth(number, optional, default: 1) — Number of array layers.filter(string, optional, default: "\"NEAREST\"") — GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER value.internalFormat(string, optional, default: "\"RGBA8\"") — Sized internal format (e.g. "RGBA8", "R32F").param(string, optional, default: "\"CLAMP_TO_EDGE\"") — GL_TEXTURE_WRAP_S/T value.levels(number, optional, default: 1) — Number of mipmap levels (immutable storage).
Returns
WebGLTexture | null
createEmptyTexture_n(
width: number,
height: number,
internalFormat?: number,
texParami?: number,
): WebGLTexture | null
Creates Empty NEAREST filtered texture.
Parameters
width(number) — Empty texture width.height(number) — Empty texture height.internalFormat(number, optional) — Internal texture format,gl.RGBAby default.texParami(number, optional) — Wrap mode for S/T axes,gl.CLAMP_TO_EDGEby default.
Returns
WebGLTexture | null
createEmptyTexture_l(
width: number,
height: number,
internalFormat?: number,
texParami?: number,
): WebGLTexture | null
Creates empty LINEAR filtered texture.
Parameters
width(number) — Empty texture width.height(number) — Empty texture height.internalFormat(number, optional)texParami(number, optional)
Returns
WebGLTexture | null
createTexture_n(
image: ImageSource,
internalFormat?: number,
texParami?: number,
texture?: WebGLTexture | null,
): WebGLTexture | null
Creates NEAREST filter texture.
Parameters
image(ImageSource) — Image or Canvas object.internalFormat(number, optional)texParami(number, optional)texture(WebGLTexture | null, optional, default: null)
Returns
WebGLTexture | null
createTexture_l(
image: ImageSource,
internalFormat?: number,
texParami?: number,
texture?: WebGLTexture | null,
): WebGLTexture | null
Creates LINEAR filter texture.
Parameters
image(ImageSource) — Image or Canvas object.internalFormat(number, optional)texParami(number, optional)texture(WebGLTexture | null, optional, default: null)
Returns
WebGLTexture | null
createTexture_mm(
image: ImageSource,
internalFormat?: number,
texParami?: number,
texture?: WebGLTexture | null,
): WebGLTexture | null
Creates MIPMAP filter texture.
Parameters
image(ImageSource) — Image or Canvas object.internalFormat(number, optional)texParami(number, optional)texture(WebGLTexture | null, optional, default: null)
Returns
WebGLTexture | null
createTexture_a(
image: ImageSource,
internalFormat?: number,
texParami?: number,
texture?: WebGLTexture | null,
): WebGLTexture | null
Creates ANISOTROPY filter texture.
Parameters
image(ImageSource) — Image or Canvas object.internalFormat(number, optional)texParami(number, optional)texture(WebGLTexture | null, optional, default: null)
Returns
WebGLTexture | null
loadCubeMapTexture(
params: Texture3DParams,
colorSpace?: number,
textureFilter?: number,
): WebGLTexture | null
Creates cube texture.
Parameters
params(Texture3DParams) — Face image urls:params.px(string) — Positive X or right image url.params.nx(string) — Negative X or left image url.params.py(string) — Positive Y or up image url.params.ny(string) — Negative Y or bottom image url.params.pz(string) — Positive Z or face image url.params.nz(string) — Negative Z or back image url.
colorSpace(number, optional, default: "gl.SRGB8_ALPHA8") — Cube texture internal format (for example gl.SRGB8_ALPHA8 or gl.RGBA8).textureFilter(number, optional, default: "gl.LINEAR") — Cube texture filter (for example gl.LINEAR or gl.NEAREST).
Returns
WebGLTexture | null
addProgram(
program: ShaderProgram,
activate?: boolean,
): ShaderProgram
Adds shader program to the handler.
Parameters
program(ShaderProgram) — Shader program.activate(boolean, optional, default: false) — If false program will not compile.
Returns
removeProgram(name: string)
Removes shader program from handler.
Parameters
name(string) — Shader program name.
addPrograms(programsArr: Array.<ShaderProgram>)
Adds shader programs to the handler.
Parameters
programsArr(Array.<ShaderProgram>) — Shader program array.
_initProgram(program: ShaderProgram)
Used in addProgram
Parameters
program(ShaderProgram) — ShaderProgram
initializeExtension(extensionStr: string, showLog: boolean): any
Initialize additional WebGL extensions.
Parameters
extensionStr(string) — Extension name.showLog(boolean, default: false) — Show logging.
Returns
any
initialize()
Main function that initializes handler.
_setDefaults()
Sets default gl render parameters. Used in init function.
setClipControlZeroToOne(useZeroToOne: boolean)
Switches clip-control depth range between ZERO_TO_ONE and NEGATIVE_ONE_TO_ONE. If EXT_clip_control is unavailable, the internal ZERO_TO_ONE flag is reset to false.
Parameters
useZeroToOne(boolean) — True sets ZERO_TO_ONE, false sets NEGATIVE_ONE_TO_ONE.
createStreamArrayBuffer(
itemSize: number,
numItems: number,
usage?: number,
bytes?: number,
): WebGLBufferExt
Creates ARRAY_BUFFER storage for frequently updated data.
Parameters
itemSize(number) — Number of scalar components per item.numItems(number) — Number of items.usage(number, optional, default: "STREAM_DRAW") — GL usage hint (STATIC_DRAW, DYNAMIC_DRAW or STREAM_DRAW).bytes(number, optional, default: 4) — Bytes per scalar component.
Returns
WebGLBufferExt
setStreamArrayBuffer(
buffer: WebGLBufferExt,
array: TypedArray,
offset?: number,
): WebGLBufferExt
Uploads data to an existing ARRAY_BUFFER via bufferSubData.
Parameters
buffer(WebGLBufferExt) — Target ARRAY_BUFFER.array(TypedArray) — Source data to upload.offset(number, optional, default: 0) — Byte offset in the target buffer.
Returns
WebGLBufferExt
createArrayBuffer(
array: TypedArray,
itemSize: number,
numItems?: number,
usage?: number,
): WebGLBufferExt
Creates and initializes ARRAY_BUFFER from a typed array.
Parameters
array(TypedArray) — Source data.itemSize(number) — Number of scalar components per item.numItems(number, optional) — Number of items (computed from array length when omitted).usage(number, optional, default: "STATIC_DRAW") — GL usage hint (STATIC_DRAW, DYNAMIC_DRAW or STREAM_DRAW).
Returns
WebGLBufferExt
createArrayBufferLength(
size: number,
usage?: number,
): WebGLBufferExt
Creates ARRAY_BUFFER storage with a specific byte length and no initial data.
Parameters
size(number) — Buffer size in bytes.usage(number, optional, default: "STATIC_DRAW") — GL usage hint (STATIC_DRAW, DYNAMIC_DRAW or STREAM_DRAW).
Returns
WebGLBufferExt
createElementArrayBuffer(
array: TypedArray,
itemSize: number,
numItems: number,
usage?: number,
): Object
Creates ELEMENT ARRAY buffer.
Parameters
array(TypedArray) — Input array.itemSize(number) — Array item size.numItems(number) — Items quantity.usage(number, optional, default: "STATIC_DRAW") — Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
Returns
Object
setSize(w: number, h: number)
Sets handler canvas size.
Parameters
w(number) — Canvas width.h(number) — Canvas height.
getWidth(): number
Returns context screen width.
Returns
number
getHeight(): number
Returns context screen height.
Returns
number
getClientAspect(): number
Returns canvas aspect ratio.
Returns
number
getCenter(): number
Returns canvas center coordinates.
Returns
number
clearFrame()
Clearing gl frame.
start()
Starts animation loop.
isWebGl2()
Check is gl context type equals webgl2
_animationFrameCallback()
Make animation.
createDefaultTexture(
params: IDefaultTextureParams | null,
success: function,
)
Creates a default 2x2 texture and passes it to callback. If params.color is set, a solid color texture is created. If params.url is set, the image is loaded asynchronously. Otherwise a fallback gray texture is created.
Parameters
params(IDefaultTextureParams | null) — Texture source parameters.success(function) — Callback with created texture.
deleteTexture(texture: WebGLTextureExt | null | undefined)
Deletes texture if it is not marked as default.
Parameters
texture(WebGLTextureExt | null | undefined) — Texture to delete.
destroy()
Releases handler resources, WebGL objects, observers and canvas.
Static Methods
getExtension(
gl: WebGL2RenderingContext | null,
name: string,
): any
The return value is null if the extension is not supported, or an extension object otherwise.
Parameters
gl(WebGL2RenderingContext | null) — WebGl context pointer.name(string) — Extension name.
Returns
any
getContext(
canvas: HTMLCanvasElement,
contextAttributes?: any,
): WebGLContextExt | null
Returns a drawing context on the canvas, or null if the context identifier is not supported.
Parameters
canvas(HTMLCanvasElement) — HTML canvas object.contextAttributes(any, optional) — See canvas.getContext contextAttributes.
Returns
WebGLContextExt | null
Instance Fields
idleMode
Idle mode skips a frame rendering when nothing has been changed since the previous frame.
isIdle
Returns true when the idle mode is on and nothing has requested a frame yet, i.e. the next frame is going to be skipped.
isFloatTextureFilterable
True when 32 bit float textures can be sampled with LINEAR filter.
Returns
boolean
floatTextureFilter
Texture filter for 32 bit float textures. Falls back to NEAREST where OES_texture_float_linear is unavailable, iOS in particular.
Returns
string
isClipControlZeroToOne
Returns true when clip-control depth range is currently ZERO_TO_ONE.
Returns
boolean