Handler

Source: Handler.ts:90

A WebGL handler for accessing low-level WebGL capabilities.


Constructor

new Handler( canvasTarget: string | HTMLCanvasElement, params?: Object, ): Handler

Parameters

  • 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.RGBA by default.
  • texParami (number, optional) — Wrap mode for S/T axes, gl.CLAMP_TO_EDGE by 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

_initProgram(program: ShaderProgram)

Used in addProgram

Parameters

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