OES_draw_buffers_indexed: blendFunciOES() 方法

Baseline 已廣泛支援

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

OES_draw_buffers_indexed WebGL 擴充套件中的 blendFunciOES() 方法定義了在混合特定繪製緩衝區畫素時使用的函式。

另請參閱 OES_draw_buffers_indexed.blendFuncSeparateiOES(),用於單獨設定 RGB 和 alpha 分量;以及 WebGLRenderingContext.blendFunc(),瞭解此方法的 WebGL 1 版本。

語法

js
blendFunciOES(buf, src, dst)

引數

buf

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

src

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

dst

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

返回值

無(undefined)。

異常

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

示例

設定和獲取混合函式

您可以透過以下方式為 gl.DRAW_BUFFER0gl.DRAW_BUFFER1 繪製緩衝區設定混合函式:

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

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

要獲取 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 擴充套件規範

瀏覽器相容性

另見