离屏画布:getContext() 方法
注意:此功能在Web Workers中可用。
OffscreenCanvas.getContext()
方法返回离屏画布的绘图上下文,如果上下文标识符不受支持,则返回null
。
语法
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
-
创建渲染上下文时,您可以使用多个上下文属性,例如
jsoffscreen.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
-
布尔值,指示如果系统性能低下,是否将创建上下文。
返回值
渲染上下文,可以是
OffscreenCanvasRenderingContext2D
(对于"2d"
),WebGLRenderingContext
(对于"webgl"
和"experimental-webgl"
),WebGL2RenderingContext
(对于"webgl2"
和"experimental-webgl2"
) 实验性 ,或ImageBitmapRenderingContext
(对于"bitmaprenderer"
)。
如果 contextType
与可能的绘图上下文不匹配,则返回 null
。
示例
const offscreen = new OffscreenCanvas(256, 256);
const gl = offscreen.getContext("webgl");
gl; // WebGLRenderingContext
gl.canvas; // OffscreenCanvas
规范
规范 |
---|
HTML 标准 # dom-offscreencanvas-getcontext-dev |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。