离屏画布:getContext() 方法

基线 2023

新功能

2023 年 3 月起,此功能可在最新的设备和浏览器版本中使用。此功能可能无法在较旧的设备或浏览器中使用。

注意:此功能在Web Workers中可用。

OffscreenCanvas.getContext() 方法返回离屏画布的绘图上下文,如果上下文标识符不受支持,则返回null

语法

js
getContext(contextType, contextAttributes)

参数

contextType

包含上下文标识符的字符串,该标识符定义与画布关联的绘图上下文。可能的值为

2d

创建一个OffscreenCanvasRenderingContext2D对象,表示二维渲染上下文。

webgl

创建一个WebGLRenderingContext对象,表示三维渲染上下文。此上下文仅在实现WebGL版本 1(OpenGL ES 2.0)的浏览器上可用。

webgl2

创建一个WebGL2RenderingContext对象,表示三维渲染上下文。此上下文仅在实现WebGL版本 2(OpenGL ES 3.0)的浏览器上可用。

bitmaprenderer

创建一个ImageBitmapRenderingContext,它只提供用给定的ImageBitmap替换画布内容的功能。

注意:标识符"experimental-webgl""experimental-webgl2"也用于 WebGL 的实现中。这些实现尚未达到测试套件一致性,或者平台上的图形驱动程序情况尚不稳定。Khronos Group根据某些一致性规则认证 WebGL 实现。

contextAttributes

创建渲染上下文时,您可以使用多个上下文属性,例如

js
offscreen.getContext("webgl", { antialias: false, depth: false });

2d 上下文属性

alpha

布尔值,指示画布是否包含 alpha 通道。如果设置为 false,浏览器现在知道背景始终是不透明的,这可以加快透明内容和图像的绘制速度。

willReadFrequently 非标准 (仅限 Firefox)

布尔值,指示是否计划进行大量读回操作。这将强制使用软件(而不是硬件加速)2D 画布,并且在频繁调用getImageData()时可以节省内存。如果标志 gfx.canvas.willReadFrequently.enable 设置为 true,则仅此选项可用(默认情况下,仅限于 B2G/Firefox OS)。

storage 非标准 (仅限 Blink)

指示使用哪个存储的字符串(默认为“persistent”)。

WebGL 上下文属性

alpha

布尔值,指示画布是否包含 alpha 缓冲区。

depth

布尔值,指示请求绘图缓冲区具有至少 16 位的深度缓冲区。

stencil

布尔值,指示请求绘图缓冲区具有至少 8 位的模板缓冲区。

antialias

布尔值,指示是否在可能的情况下执行抗锯齿。

premultipliedAlpha

布尔值,指示页面合成器将假定绘图缓冲区包含具有预乘 alpha 的颜色。

preserveDrawingBuffer

如果值为 true,则缓冲区将不会被清除,并且会保留其值,直到被作者清除或覆盖。

failIfMajorPerformanceCaveat

布尔值,指示如果系统性能低下,是否将创建上下文。

返回值

渲染上下文,可以是

如果 contextType 与可能的绘图上下文不匹配,则返回 null

示例

js
const offscreen = new OffscreenCanvas(256, 256);
const gl = offscreen.getContext("webgl");

gl; // WebGLRenderingContext
gl.canvas; // OffscreenCanvas

规范

规范
HTML 标准
# dom-offscreencanvas-getcontext-dev

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅