OES_draw_buffers_indexed: blendFuncSeparateiOES() 方法

Baseline 已廣泛支援

此功能已成熟,可跨多個裝置和瀏覽器版本使用。自 2022 年 12 月起,所有瀏覽器均已提供此功能。

OES_draw_buffers_indexed WebGL 擴充套件的 blendFuncSeparateiOES() 方法定義了為特定繪製緩衝區分別混合 RGB 和 Alpha 分量時使用的函式。

有關同時設定 RGB 和 Alpha 的資訊,請參閱 OES_draw_buffers_indexed.blendFunciOES();有關此方法的 WebGL 1 版本,請參閱 WebGLRenderingContext.blendFuncSeparate()

語法

js
blendFuncSeparateiOES(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)

引數

buf

一個整數 i,指定與常量 gl.DRAW_BUFFERi 關聯的繪製緩衝區。請參閱 WebGL 繪製緩衝區常量

srcRGB

一個 GLenum,指定紅色、綠色和藍色 (RGB) 源混合因子的乘數。接受與 WebGLRenderingContext.blendFuncSeparate() 中的 srcRGB 引數相同的列舉值。

dstRGB

一個 GLenum,指定紅色、綠色和藍色 (RGB) 目標混合因子的乘數。接受與 WebGLRenderingContext.blendFuncSeparate() 中的 dstRGB 引數相同的列舉值。

srcAlpha

一個 GLenum,指定 Alpha 源混合因子的乘數。接受與 WebGLRenderingContext.blendFuncSeparate() 中的 srcAlpha 引數相同的列舉值。

dstAlpha

一個 GLenum,指定 Alpha 目標混合因子的乘數。接受與 WebGLRenderingContext.blendFuncSeparate() 中的 srcAlpha 引數相同的列舉值。

返回值

無(undefined)。

異常

  • 如果 buf 不是有效值,則會丟擲 gl.INVALID_VALUE 錯誤。
  • 如果 srcRGBdstRGBsrcAlphadstAlpha 不是可能的值之一,則會丟擲 gl.INVALID_ENUM 錯誤。
  • WebGLRenderingContext.blendFuncSeparate() 相同的混合限制適用:如果常量顏色和常量 Alpha 值同時用作源和目標因子,則會丟擲 gl.INVALID_ENUM 錯誤。

示例

設定和獲取混合函式

以下程式碼設定繪製緩衝區 gl.DRAW_BUFFER0(當 buf 為 0 時呼叫)和 gl.DRAW_BUFFER1(當 buf 為 1 時呼叫)的混合函式。

js
const ext = gl.getExtension("OES_draw_buffers_indexed");

ext.blendFuncSeparateiOES(0, gl.ONE, gl.ONE, gl.ZERO, gl.ZERO);
ext.blendFuncSeparateiOES(
  1,
  gl.SRC_ALPHA,
  gl.ONE_MINUS_SRC_ALPHA,
  gl.ZERO,
  gl.ZERO,
);

要獲取 gl.DRAW_BUFFER0gl.DRAW_BUFFER1 繪製緩衝區的混合函式,請使用 WebGL2RenderingContext.getIndexedParameter() 查詢 BLEND_SRC_RGBBLEND_SRC_ALPHABLEND_DST_RGBBLEND_DST_ALPHA 常量。

js
// For gl.DRAW_BUFFER0
gl.getIndexedParameter(gl.BLEND_SRC_RGB, 0);
gl.getIndexedParameter(gl.BLEND_SRC_ALPHA, 0);
gl.getIndexedParameter(gl.BLEND_DST_RGB, 0);
gl.getIndexedParameter(gl.BLEND_DST_ALPHA, 0);

// For gl.DRAW_BUFFER0
gl.getIndexedParameter(gl.BLEND_SRC_RGB, 1);
gl.getIndexedParameter(gl.BLEND_SRC_ALPHA, 1);
gl.getIndexedParameter(gl.BLEND_DST_RGB, 1);
gl.getIndexedParameter(gl.BLEND_DST_ALPHA, 1);

規範

規範
WebGL OES_draw_buffers_indexed 擴充套件規範

瀏覽器相容性

另見