WebGLRenderingContext
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
WebGLRenderingContext 介面為 HTML <canvas> 元素的繪圖表面提供了 OpenGL ES 2.0 圖形渲染上下文的介面。
要獲取 WebGL 上下文以進行 2D 和/或 3D 圖形渲染,請在 <canvas> 元素上呼叫 getContext(),並將 "webgl" 作為引數。
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.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()-
返回附加到
WebGLProgram的WebGLShader物件列表。 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 |
瀏覽器相容性
載入中…