Skip to main content

Class: WebGLUtils

Defined in: utils/WebGLUtils.ts:4

Low-level WebGL 2 helper methods for context, shader, buffer, texture, and blending management

Constructors

Constructor

new WebGLUtils(): WebGLUtils

Returns

WebGLUtils

Methods

configureVertexFloatAttribute()

static configureVertexFloatAttribute(gl, target, buffer, index, size, type, options?): void

Defined in: utils/WebGLUtils.ts:161

Binds a buffer to a vertex attribute as a floating-point attribute

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

target

number

Buffer binding target

buffer

WebGLBuffer

The buffer containing attribute data

index

number

Attribute location index

size

number

Number of components per vertex attribute

type

number

Data type (e.g. gl.FLOAT)

options?

Optional normalized, stride, offset, and divisor settings

divisor?

number

normalized?

boolean

offset?

number

stride?

number

Returns

void


configureVertexIntAttribute()

static configureVertexIntAttribute(gl, target, buffer, index, size, type, options?): void

Defined in: utils/WebGLUtils.ts:199

Binds a buffer to a vertex attribute as an integer attribute

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

target

number

Buffer binding target

buffer

WebGLBuffer

The buffer containing attribute data

index

number

Attribute location index

size

number

Number of components per vertex attribute

type

number

Data type (e.g. gl.UNSIGNED_INT)

options?

Optional stride, offset, and divisor settings

divisor?

number

offset?

number

stride?

number

Returns

void


createBuffer()

static createBuffer(gl): WebGLBuffer

Defined in: utils/WebGLUtils.ts:107

Creates a new WebGL buffer

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

Returns

WebGLBuffer

Throws

If buffer creation fails


createDataTexture()

static createDataTexture(gl, internalformat, width, height, format, type, data?): WebGLTexture

Defined in: utils/WebGLUtils.ts:228

Creates an immutable 2D data texture with nearest-neighbor filtering and clamp-to-edge wrapping

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

internalformat

number

Internal texture format (e.g. gl.RGBA32F)

width

number

Texture width in texels

height

number

Texture height in texels

format

number

Pixel data format (e.g. gl.RGBA)

type

number

Pixel data type (e.g. gl.FLOAT)

data?

TypedArray

Optional initial pixel data

Returns

WebGLTexture


createVertexArray()

static createVertexArray(gl): WebGLVertexArrayObject

Defined in: utils/WebGLUtils.ts:142

Creates a new vertex array object (VAO)

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

Returns

WebGLVertexArrayObject

Throws

If VAO creation fails


disableAlphaBlending()

static disableAlphaBlending(gl): void

Defined in: utils/WebGLUtils.ts:393

Disables blending and restores the default blend state

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

Returns

void


enableAlphaBlending()

static enableAlphaBlending(gl): void

Defined in: utils/WebGLUtils.ts:373

Enables premultiplied-alpha blending (Porter-Duff "over" operator)

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

Returns

void


getUniformLocation()

static getUniformLocation(gl, program, name): WebGLUniformLocation

Defined in: utils/WebGLUtils.ts:89

Returns the location of a uniform variable in a shader program

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

program

WebGLProgram

The shader program

name

string

The uniform name as declared in the shader

Returns

WebGLUniformLocation

Throws

If the uniform is not found


init()

static init(canvas, contextAttributes?): WebGL2RenderingContext

Defined in: utils/WebGLUtils.ts:12

Initializes a WebGL 2 rendering context on the given canvas

Parameters

canvas

HTMLCanvasElement

The canvas element

contextAttributes?

WebGLContextAttributes

Optional WebGL context attributes

Returns

WebGL2RenderingContext

Throws

If the browser does not support WebGL 2.0


loadBuffer()

static loadBuffer(gl, target, buffer, data, options?): void

Defined in: utils/WebGLUtils.ts:355

Uploads typed array data into a region of an existing buffer

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

target

number

Buffer binding target

buffer

WebGLBuffer

The target buffer

data

IntArray | UintArray | Float32Array<ArrayBufferLike>

The data to upload

options?

Optional element offset within the buffer

offset?

number

Returns

void


loadDataTexture()

static loadDataTexture(gl, texture, width, height, format, type, data): void

Defined in: utils/WebGLUtils.ts:276

Uploads new pixel data into an existing immutable 2D data texture

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

texture

WebGLTexture

The target texture

width

number

Texture width in texels

height

number

Texture height in texels

format

number

Pixel data format (e.g. gl.RGBA)

type

number

Pixel data type (e.g. gl.FLOAT)

data

TypedArray

The pixel data to upload

Returns

void


loadImageTextureFromUrl()

static loadImageTextureFromUrl(gl, url, options?): Promise<WebGLTexture>

Defined in: utils/WebGLUtils.ts:297

Loads an image from a URL and creates a WebGL texture from it

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

url

string

The image URL

options?

Optional mipmap generation flag and abort signal

mipmap?

boolean

signal?

AbortSignal

Returns

Promise<WebGLTexture>


loadProgram()

static loadProgram(gl, vertexShaderSource, fragmentShaderSource): WebGLProgram

Defined in: utils/WebGLUtils.ts:35

Compiles vertex and fragment shaders, links them into a program, and returns the linked program

The individual shaders are flagged for deletion after linking.

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

vertexShaderSource

string

GLSL source for the vertex shader

fragmentShaderSource

string

GLSL source for the fragment shader

Returns

WebGLProgram

Throws

If shader compilation or program linking fails


resizeBuffer()

static resizeBuffer(gl, target, buffer, size, usage): void

Defined in: utils/WebGLUtils.ts:124

Allocates (or re-allocates) storage for a buffer, discarding previous contents

Parameters

gl

WebGL2RenderingContext

The WebGL 2 rendering context

target

number

Buffer binding target (e.g. gl.ARRAY_BUFFER)

buffer

WebGLBuffer

The buffer to resize

size

number

New size in bytes

usage

number

Usage hint (e.g. gl.STATIC_DRAW)

Returns

void