WebGL2RenderingContext

基线 广泛可用

此功能已建立,可在许多设备和浏览器版本上运行。它已在所有浏览器中可用,自 2021 年 9 月.

WebGL2RenderingContext 接口为 HTML <canvas> 元素的绘图表面提供了 OpenGL ES 3.0 渲染上下文。

要获取此接口的对象,请在 <canvas> 元素上调用 getContext(),并提供 "webgl2" 作为参数

js
const canvas = document.getElementById("myCanvas");
const gl = canvas.getContext("webgl2");

注意:WebGL 2 是 WebGL 1 的扩展。WebGL2RenderingContext 接口实现了 WebGLRenderingContext 接口的所有成员。WebGL 1 上下文的一些方法在 WebGL 2 上下文中使用时可以接受其他值。您将在 WebGL 1 参考页面上找到此信息。

WebGL 教程 提供了有关如何开始使用 WebGL 的更多信息、示例和资源。

常量

请参阅 WebGL 常量 页面。

状态信息

WebGL2RenderingContext.getIndexedParameter()

返回给定 target 的索引值。

缓冲区

WebGL2RenderingContext.bufferData()

初始化并创建缓冲区对象的存储区。

WebGL2RenderingContext.bufferSubData()

更新缓冲区对象存储区的子集。

WebGL2RenderingContext.copyBufferSubData()

将缓冲区的一部分数据复制到另一个缓冲区。

WebGL2RenderingContext.getBufferSubData()

从缓冲区读取数据并将其写入 ArrayBufferSharedArrayBuffer

帧缓冲区

WebGL2RenderingContext.blitFramebuffer()

将一块像素从读取帧缓冲区传输到绘制帧缓冲区。

WebGL2RenderingContext.framebufferTextureLayer()

将纹理的单个图层附加到帧缓冲区。

WebGL2RenderingContext.invalidateFramebuffer()

使帧缓冲区中附件的内容失效。

WebGL2RenderingContext.invalidateSubFramebuffer()

使帧缓冲区中附件内容的某些部分失效

WebGL2RenderingContext.readBuffer()

选择颜色缓冲区作为像素的来源。

渲染缓冲区

WebGL2RenderingContext.getInternalformatParameter()

返回有关内部格式的实现依赖支持的信息。

WebGL2RenderingContext.renderbufferStorageMultisample()

创建并初始化渲染缓冲区对象的存储区,并允许指定要使用的样本数量。

纹理

WebGL2RenderingContext.texStorage2D()

指定二维纹理存储的所有级别。

WebGL2RenderingContext.texStorage3D()

指定三维纹理或二维数组纹理的所有级别。

WebGL2RenderingContext.texImage3D()

指定三维纹理图像。

WebGL2RenderingContext.texSubImage3D()

指定当前 3D 纹理的子矩形。

WebGL2RenderingContext.copyTexSubImage3D()

将像素从当前 WebGLFramebuffer 复制到现有的 3D 纹理子图像中。

WebGL2RenderingContext.compressedTexImage3D

以压缩格式指定三维纹理图像。

WebGL2RenderingContext.compressedTexSubImage3D()

为以压缩格式指定的纹理图像指定三维子矩形。

程序和着色器

WebGL2RenderingContext.getFragDataLocation()

返回颜色编号与用户定义的输出变量的绑定。

制服和属性

WebGL2RenderingContext.uniform[1234][uif][v]()

指定统一变量值的方法。

WebGL2RenderingContext.uniformMatrix[234]x[234]fv()

指定统一变量的矩阵值的方法。

WebGL2RenderingContext.vertexAttribI4[u]i[v]()

指定通用顶点属性的整数值的方法。

WebGL2RenderingContext.vertexAttribIPointer()

指定顶点属性数组中顶点属性的整数数据格式和位置。

绘制缓冲区

WebGL2RenderingContext.vertexAttribDivisor()

使用 gl.drawArraysInstanced()gl.drawElementsInstanced() 渲染基元的多重实例时,修改通用顶点属性的递增速率。

WebGL2RenderingContext.drawArraysInstanced()

从数组数据渲染基元。此外,它还可以执行元素范围的多重实例。

WebGL2RenderingContext.drawElementsInstanced()

从数组数据渲染基元。此外,它还可以执行一组元素的多重实例。

WebGL2RenderingContext.drawRangeElements()

从给定范围内的数组数据渲染基元。

WebGL2RenderingContext.drawBuffers()

指定要绘制到的颜色缓冲区的列表。

WebGL2RenderingContext.clearBuffer[fiuv]()

从当前绑定的帧缓冲区中清除缓冲区。

查询对象

用于处理 WebGLQuery 对象的方法。

WebGL2RenderingContext.createQuery()

创建一个新的 WebGLQuery 对象。

WebGL2RenderingContext.deleteQuery()

删除给定的 WebGLQuery 对象。

WebGL2RenderingContext.isQuery()

如果给定对象是有效的 WebGLQuery 对象,则返回 true

WebGL2RenderingContext.beginQuery()

开始异步查询。

WebGL2RenderingContext.endQuery()

标记异步查询的结束。

WebGL2RenderingContext.getQuery()

返回给定目标的 WebGLQuery 对象。

WebGL2RenderingContext.getQueryParameter()

返回有关查询的信息。

采样器对象

WebGL2RenderingContext.createSampler()

创建一个新的 WebGLSampler 对象。

WebGL2RenderingContext.deleteSampler()

删除给定的 WebGLSampler 对象。

WebGL2RenderingContext.bindSampler()

将给定的 WebGLSampler 绑定到纹理单元。

WebGL2RenderingContext.isSampler()

如果给定对象是有效的 WebGLSampler 对象,则返回 true

WebGL2RenderingContext.samplerParameter[if]()

设置采样器参数。

WebGL2RenderingContext.getSamplerParameter()

返回采样器参数信息。

同步对象

WebGL2RenderingContext.fenceSync()

创建一个新的 WebGLSync 对象并将其插入 GL 命令流。

WebGL2RenderingContext.isSync()

如果传递的对象是有效的 WebGLSync 对象,则返回 true

WebGL2RenderingContext.deleteSync()

删除给定的 WebGLSync 对象。

WebGL2RenderingContext.clientWaitSync()

阻塞并等待 WebGLSync 对象发出信号或给定的超时时间过去。

WebGL2RenderingContext.waitSync()

立即返回,但会在 GL 服务器上等待,直到给定的 WebGLSync 对象发出信号。

WebGL2RenderingContext.getSyncParameter()

返回 WebGLSync 对象的参数信息。

变换反馈

统一缓冲区对象

WebGL2RenderingContext.bindBufferBase()

将给定的 WebGLBuffer 绑定到给定的绑定点 (target) 在给定的 index 上。

WebGL2RenderingContext.bindBufferRange()

将给定的 WebGLBuffer 的范围绑定到给定的绑定点 (target) 在给定的 index 上。

WebGL2RenderingContext.getUniformIndices()

检索 WebGLProgram 中多个制服的索引。

WebGL2RenderingContext.getActiveUniforms()

检索 WebGLProgram 中活动制服的信息。

WebGL2RenderingContext.getUniformBlockIndex()

检索 WebGLProgram 中制服块的索引。

WebGL2RenderingContext.getActiveUniformBlockParameter()

检索 WebGLProgram 中活动制服块的信息。

WebGL2RenderingContext.getActiveUniformBlockName()

检索 WebGLProgram 中给定索引处活动制服块的名称。

WebGL2RenderingContext.uniformBlockBinding()

为活动制服块分配绑定点。

顶点数组对象

规范

规范
WebGL 2.0 规范
# 3.7

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅