WebGL2RenderingContext
WebGL2RenderingContext 接口为 HTML <canvas>
元素的绘图表面提供了 OpenGL ES 3.0 渲染上下文。
要获取此接口的对象,请在 <canvas>
元素上调用 getContext()
,并提供 "webgl2" 作为参数
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()
-
从缓冲区读取数据并将其写入
ArrayBuffer
或SharedArrayBuffer
。
帧缓冲区
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.createTransformFeedback()
-
创建并初始化
WebGLTransformFeedback
对象。 WebGL2RenderingContext.deleteTransformFeedback()
-
删除给定的
WebGLTransformFeedback
对象。 WebGL2RenderingContext.isTransformFeedback()
-
如果传递的对象是有效的
WebGLTransformFeedback
对象,则返回true
。 WebGL2RenderingContext.bindTransformFeedback()
-
将传递的
WebGLTransformFeedback
对象绑定到当前 GL 状态。 WebGL2RenderingContext.beginTransformFeedback()
-
启动变换反馈操作。
WebGL2RenderingContext.endTransformFeedback()
-
结束变换反馈操作。
WebGL2RenderingContext.transformFeedbackVaryings()
-
指定在
WebGLTransformFeedback
缓冲区中记录的值。 WebGL2RenderingContext.getTransformFeedbackVarying()
-
返回来自
WebGLTransformFeedback
缓冲区的变化变量信息。 WebGL2RenderingContext.pauseTransformFeedback()
-
暂停变换反馈操作。
WebGL2RenderingContext.resumeTransformFeedback()
-
恢复变换反馈操作。
统一缓冲区对象
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()
-
为活动制服块分配绑定点。
顶点数组对象
用于处理 WebGLVertexArrayObject
(VAO) 对象的方法。
WebGL2RenderingContext.createVertexArray()
-
创建一个新的
WebGLVertexArrayObject
。 WebGL2RenderingContext.deleteVertexArray()
-
删除给定的
WebGLVertexArrayObject
。 WebGL2RenderingContext.isVertexArray()
-
如果给定对象是有效的
WebGLVertexArrayObject
,则返回true
。 WebGL2RenderingContext.bindVertexArray()
-
将给定的
WebGLVertexArrayObject
绑定到缓冲区。
规范
规范 |
---|
WebGL 2.0 规范 # 3.7 |
浏览器兼容性
BCD 表格仅在浏览器中加载