WebGLRenderingContext

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

* 此特性的某些部分可能存在不同級別的支援。

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

WebGLRenderingContext 介面為 HTML <canvas> 元素的繪圖表面提供了 OpenGL ES 2.0 圖形渲染上下文的介面。

要獲取 WebGL 上下文以進行 2D 和/或 3D 圖形渲染,請在 <canvas> 元素上呼叫 getContext(),並將 "webgl" 作為引數。

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

一旦有了 canvas 的 WebGL 渲染上下文,就可以在其中進行渲染。WebGL 教程提供了更多關於如何開始使用 WebGL 的資訊、示例和資源。

如果需要 WebGL 2.0 上下文,請參閱 WebGL2RenderingContext;它提供了對 OpenGL ES 3.0 圖形實現的訪問。

常量

請參閱 WebGL 常量頁面。

WebGL 上下文

以下屬性和方法提供有關 WebGL 上下文的通用資訊和功能。

WebGLRenderingContext.canvas

HTMLCanvasElement 的只讀反向引用。如果未與 <canvas> 元素關聯,則可能為 null

WebGLRenderingContext.drawingBufferWidth

當前繪圖緩衝的只讀寬度。應與與此上下文關聯的 canvas 元素的寬度匹配。

WebGLRenderingContext.drawingBufferHeight

當前繪圖緩衝的只讀高度。應與與此上下文關聯的 canvas 元素的高度匹配。

WebGLRenderingContext.getContextAttributes()

返回包含實際上下文引數的 WebGLContextAttributes 物件。如果上下文丟失,則可能返回 null

WebGLRenderingContext.isContextLost()

如果上下文丟失,則返回 true,否則返回 false

WebGLRenderingContext.makeXRCompatible()

確保上下文與使用者的 XR 硬體相容,如有必要,將透過新的配置重新建立上下文。這可用於啟動使用標準 2D 呈現的應用程式,然後過渡到以後使用 VR 或 AR 模式。

檢視和裁剪

WebGLRenderingContext.scissor()

定義剪裁框。

WebGLRenderingContext.viewport()

設定視口。

狀態資訊

WebGLRenderingContext.activeTexture()

選擇活動的紋理單元。

WebGLRenderingContext.blendColor()

設定源和目標混合因子。

WebGLRenderingContext.blendEquation()

將 RGB 混合方程和 alpha 混合方程都設定為一個方程。

WebGLRenderingContext.blendEquationSeparate()

分別設定 RGB 混合方程和 alpha 混合方程。

WebGLRenderingContext.blendFunc()

定義用於混合畫素算術的函式。

WebGLRenderingContext.blendFuncSeparate()

分別定義用於混合 RGB 和 alpha 分量的畫素算術的函式。

WebGLRenderingContext.clearColor()

指定清除顏色緩衝區時使用的顏色值。

WebGLRenderingContext.clearDepth()

指定清除深度緩衝區時使用的深度值。

WebGLRenderingContext.clearStencil()

指定清除模板緩衝區時使用的模板值。

WebGLRenderingContext.colorMask()

設定在繪製或渲染到 WebGLFramebuffer 時要啟用或停用的顏色分量。

WebGLRenderingContext.cullFace()

指定是否可以剔除正面和/或背面多邊形。

WebGLRenderingContext.depthFunc()

指定一個函式,用於比較傳入畫素深度與當前深度緩衝區值。

WebGLRenderingContext.depthMask()

設定是否啟用或停用寫入深度緩衝區。

WebGLRenderingContext.depthRange()

指定從歸一化裝置座標到視窗或視口座標的深度範圍對映。

WebGLRenderingContext.disable()

停用此上下文的特定 WebGL 功能。

WebGLRenderingContext.enable()

啟用此上下文的特定 WebGL 功能。

WebGLRenderingContext.frontFace()

透過設定環繞方向來指定多邊形是正面還是背面。

WebGLRenderingContext.getParameter()

返回傳遞引數名稱的值。

WebGLRenderingContext.getError()

返回錯誤資訊。

WebGLRenderingContext.hint()

指定某些行為的提示。這些提示的解釋取決於實現。

WebGLRenderingContext.isEnabled()

測試此上下文是否啟用了特定的 WebGL 功能。

WebGLRenderingContext.lineWidth()

設定柵格化線的線寬。

WebGLRenderingContext.pixelStorei()

指定畫素儲存模式。

WebGLRenderingContext.polygonOffset()

指定用於計算深度值的比例因子和單位。

WebGLRenderingContext.sampleCoverage()

指定用於抗鋸齒效果的多樣本覆蓋引數。

WebGLRenderingContext.stencilFunc()

設定模板測試的正面和背面函式以及參考值。

WebGLRenderingContext.stencilFuncSeparate()

分別設定模板測試的正面和/或背面函式以及參考值。

WebGLRenderingContext.stencilMask()

控制模板平面中單個位的正面和背面寫入的啟用和停用。

WebGLRenderingContext.stencilMaskSeparate()

控制模板平面中單個位的正面和/或背面寫入的啟用和停用。

WebGLRenderingContext.stencilOp()

設定正面和背面模板測試操作。

WebGLRenderingContext.stencilOpSeparate()

設定正面和/或背面模板測試操作。

緩衝區

WebGLRenderingContext.bindBuffer()

WebGLBuffer 物件繫結到給定目標。

WebGLRenderingContext.bufferData()

更新緩衝區資料。

WebGLRenderingContext.bufferSubData()

從傳遞的偏移量開始更新緩衝區資料。

WebGLRenderingContext.createBuffer()

建立 WebGLBuffer 物件。

WebGLRenderingContext.deleteBuffer()

刪除 WebGLBuffer 物件。

WebGLRenderingContext.getBufferParameter()

返回有關緩衝區的資訊。

WebGLRenderingContext.isBuffer()

返回一個布林值,指示傳遞的緩衝區是否有效。

幀緩衝

WebGLRenderingContext.bindFramebuffer()

WebGLFrameBuffer 物件繫結到給定目標。

WebGLRenderingContext.checkFramebufferStatus()

返回幀緩衝區的狀態。

WebGLRenderingContext.createFramebuffer()

建立 WebGLFrameBuffer 物件。

WebGLRenderingContext.deleteFramebuffer()

刪除 WebGLFrameBuffer 物件。

WebGLRenderingContext.framebufferRenderbuffer()

WebGLRenderingBuffer 物件附加到 WebGLFrameBuffer 物件。

WebGLRenderingContext.framebufferTexture2D()

將紋理影像附加到 WebGLFrameBuffer 物件。

WebGLRenderingContext.getFramebufferAttachmentParameter()

返回有關幀緩衝區的資訊。

WebGLRenderingContext.isFramebuffer()

返回一個布林值,指示傳遞的 WebGLFrameBuffer 物件是否有效。

WebGLRenderingContext.readPixels()

WebGLFrameBuffer 讀取畫素塊。

渲染緩衝

WebGLRenderingContext.bindRenderbuffer()

WebGLRenderBuffer 物件繫結到給定目標。

WebGLRenderingContext.createRenderbuffer()

建立 WebGLRenderBuffer 物件。

WebGLRenderingContext.deleteRenderbuffer()

刪除 WebGLRenderBuffer 物件。

WebGLRenderingContext.getRenderbufferParameter()

返回有關渲染緩衝區的資訊。

WebGLRenderingContext.isRenderbuffer()

返回一個布林值,指示傳遞的 WebGLRenderingBuffer 是否有效。

WebGLRenderingContext.renderbufferStorage()

建立渲染緩衝區資料儲存。

紋理

WebGLRenderingContext.bindTexture()

WebGLTexture 物件繫結到給定目標。

WebGLRenderingContext.compressedTexImage2D()

以壓縮格式指定 2D 紋理影像。

WebGLRenderingContext.compressedTexSubImage2D()

以壓縮格式指定 2D 紋理子影像。

WebGLRenderingContext.copyTexImage2D()

複製 2D 紋理影像。

WebGLRenderingContext.copyTexSubImage2D()

複製 2D 紋理子影像。

WebGLRenderingContext.createTexture()

建立 WebGLTexture 物件。

WebGLRenderingContext.deleteTexture()

刪除 WebGLTexture 物件。

WebGLRenderingContext.generateMipmap()

WebGLTexture 物件生成一組 mipmap。

WebGLRenderingContext.getTexParameter()

返回有關紋理的資訊。

WebGLRenderingContext.isTexture()

返回一個布林值,指示傳遞的 WebGLTexture 是否有效。

WebGLRenderingContext.texImage2D()

指定 2D 紋理影像。

WebGLRenderingContext.texSubImage2D()

更新當前 WebGLTexture 的子矩形。

WebGLRenderingContext.texParameterf()

設定紋理引數。

WebGLRenderingContext.texParameteri()

設定紋理引數。

程式和著色器

WebGLRenderingContext.attachShader()

WebGLShader 附加到 WebGLProgram

WebGLRenderingContext.bindAttribLocation()

將通用頂點索引繫結到命名屬性變數。

WebGLRenderingContext.compileShader()

編譯 WebGLShader

WebGLRenderingContext.createProgram()

建立 WebGLProgram

WebGLRenderingContext.createShader()

建立 WebGLShader

WebGLRenderingContext.deleteProgram()

刪除 WebGLProgram

WebGLRenderingContext.deleteShader()

刪除 WebGLShader

WebGLRenderingContext.detachShader()

分離 WebGLShader

WebGLRenderingContext.getAttachedShaders()

返回附加到 WebGLProgramWebGLShader 物件列表。

WebGLRenderingContext.getProgramParameter()

返回有關程式的資訊。

WebGLRenderingContext.getProgramInfoLog()

返回 WebGLProgram 物件的資訊日誌。

WebGLRenderingContext.getShaderParameter()

返回有關著色器(shader)的資訊。

WebGLRenderingContext.getShaderPrecisionFormat()

返回一個 WebGLShaderPrecisionFormat 物件,描述著色器數字格式的精度。

WebGLRenderingContext.getShaderInfoLog()

返回 WebGLShader 物件的資訊日誌。

WebGLRenderingContext.getShaderSource()

WebGLShader 的原始碼作為字串返回。

WebGLRenderingContext.isProgram()

返回一個布林值,指示傳遞的 WebGLProgram 是否有效。

WebGLRenderingContext.isShader()

返回一個布林值,指示傳遞的 WebGLShader 是否有效。

WebGLRenderingContext.linkProgram()

連結傳遞的 WebGLProgram 物件。

WebGLRenderingContext.shaderSource()

設定 WebGLShader 中的原始碼。

WebGLRenderingContext.useProgram()

使用指定的 WebGLProgram 作為當前渲染狀態的一部分。

WebGLRenderingContext.validateProgram()

驗證 WebGLProgram

統一變數和屬性

WebGLRenderingContext.disableVertexAttribArray()

停用給定位置的頂點屬性陣列。

WebGLRenderingContext.enableVertexAttribArray()

啟用給定位置的頂點屬性陣列。

WebGLRenderingContext.getActiveAttrib()

返回有關活動屬性變數的資訊。

WebGLRenderingContext.getActiveUniform()

返回有關活動統一變數的資訊。

WebGLRenderingContext.getAttribLocation()

返回屬性變數的位置。

WebGLRenderingContext.getUniform()

返回給定位置的統一變數的值。

WebGLRenderingContext.getUniformLocation()

返回統一變數的位置。

WebGLRenderingContext.getVertexAttrib()

返回有關給定位置的頂點屬性的資訊。

WebGLRenderingContext.getVertexAttribOffset()

返回給定頂點屬性的地址。

WebGLRenderingContext.uniform[1234][fi][v]()

為統一變數指定一個值。

WebGLRenderingContext.uniformMatrix[234]fv()

為統一變數指定矩陣值。

WebGLRenderingContext.vertexAttrib[1234]f[v]()

為通用頂點屬性指定一個值。

WebGLRenderingContext.vertexAttribPointer()

指定頂點屬性陣列中頂點屬性的資料格式和位置。

繪圖緩衝

WebGLRenderingContext.clear()

將指定的緩衝區清除為預設值。

WebGLRenderingContext.drawArrays()

從陣列資料渲染圖元。

WebGLRenderingContext.drawElements()

從元素陣列資料渲染圖元。

WebGLRenderingContext.finish()

阻塞執行,直到所有先前呼叫的命令都完成。

WebGLRenderingContext.flush()

清空不同的緩衝區命令,導致所有命令儘快執行。

顏色空間

WebGLRenderingContext.drawingBufferColorSpace

指定 WebGL 繪圖緩衝區的顏色空間。

WebGLRenderingContext.unpackColorSpace

指定匯入紋理時要轉換到的顏色空間。

使用擴充套件

這些方法管理 WebGL 擴充套件。

WebGLRenderingContext.getSupportedExtensions()

返回一個 Array 字串,其中包含所有支援的 WebGL 擴充套件。

WebGLRenderingContext.getExtension()

返回一個擴充套件物件。

規範

規範
WebGL 規範
# 5.14

瀏覽器相容性

另見