gltools provides functions to initialize, instrument and manipulate WebGL contexts.
Create a WebGL context, autocreating a canvas
import {createGLContext} from '@luma.gl/gltools';
const gl = createGLContext(); // Prefers WebGL 2 but falls back to WebGL 1
Create a WebGL 2 context.
import {createGLContext} from '@luma.gl/gltools';
const gl = createGLContext({
webgl1: false,
throwOnError: false
});
if (!gl) {
console.error('WebGL 2 not supported');
}
Polyfill a WebGL context with features available in extensions.
import {polyfillContext} from '@luma.gl/gltools';
const gl = canvas.createContext('webgl'); // A WebGL 1 context
polyfillContext(gl);
// Using extension via WebGL 2 API
const vao = gl.createVertexArray();
Instrument an externally-created context to work with other luma.gl classes.
import {instrumentGLContext} from '@luma.gl/gltools';
import {Model} from '@luma.gl/engine';
const gl = canvas.createContext('webgl');
instrumentGLContext(gl);
// Instrumentation ensures the context works with higher-level classes.
const model = new Model(gl, options);
Creates and returns a WebGL context, both in browsers and in Node.js.
const gl = createGLContext(options);
options
(Object) - key/value pairs containing context creation optionsParameter | Default | Description |
---|---|---|
webgl2 | true | If true , will attempt to create a WebGL 2 context. Will silently fall back to WebGL 1 contexts unless webgl1 is set to false . |
webgl1 | true | If true , will attempt to create a WebGL 1 context. The webgl2 flag has higher priority. |
throwOnError | true | Normally the context will throw an error on failure. If false , it will log to console instead. |
break | [] | Insert a break point (debugger ) if one of the listed gl functions is called. |
manageState | true | Instrument the context to enable state caching and withParameter calls. Leave on unless you have special reasons not to. |
debug | false | WebGL API calls will be logged to the console and WebGL errors will generate JavaScript exceptions. NOTE: requires importing @luma.gl/debug. |
onContextLost | undefined | A handler for webglcontextlost event that is fired if the user agent detects that the drawing buffer associated with a WebGLRenderingContext object has been lost. |
onContextRestored | undefined | A handler for webglcontextrestored event that is fired if the user agent restores the drawing buffer for a WebGLRenderingContext object. |
canvas | null | A string containing the id of an existing HTML element or a DOMElement instance. If null or not provided, a new canvas will be created. |
alpha | true | Default render target has an alpha buffer. |
depth | true | Default render target has a depth buffer of at least 16 bits. |
stencil | false | Default render target has a stencil buffer of at least 8 bits. |
antialias | true | Boolean that indicates whether or not to perform anti-aliasing. |
premultipliedAlpha | true | Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha. |
preserveDrawingBuffer | false | Default render target buffers will not be automatically cleared and will preserve their values until cleared or overwritten |
failIfMajorPerformanceCaveat | false | Do not create if the system performance is low. |
Instrument an externally-created context with the same options as createGLContext
. This performs WebGL 2 polyfilling (which is required for higher-level luma.gl classes) as well as optional state tracking and debug context creation.
instrumentGLContext(gl, options);
gl
(Object) - An externally-created WebGL context.options
(Object) - key/value pairs containing context creation options (same as for createGLContext
).Polyfill a WebGL context integrating available extensions.
polyfillContext(gl);
gl
{WebGLRenderingContext} - A WebGL contextResize the drawing surface.
resizeGLContext(gl, options);
gl
(Object) - A WebGL context.options
(Object) - key/value pairs containing resize options.Get debug information about a WebGL context. Depends on WEBGL_debug_renderer_info
extension.
getContextDebugInfo(gl)
gl
(Object) - A WebGL context.Returns (Object):
Test if an object is a WebGL 1 or 2 context, including correctly identifying a luma.gl debug context (which is not a subclass of a WebGLRendringContext
).
isWebGL(gl)
gl
(Object) - Object to test.
Returns true if the context is a WebGL 1 or 2 Context.Test if an object is a WebGL 1 or 2 context, including correctly identifying a luma.gl debug context (which is not a subclass of a WebGL2RendringContext
).
isWebGL2(gl)
gl
(Object) - Object to test.
Returns true if the context is a WebGL 2 Context.