OES_draw_buffers_indexed: blendEquationSeparateiOES() 方法

Baseline 已廣泛支援

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

OES_draw_buffers_indexed WebGL 擴充套件的 blendEquationSeparateiOES() 方法分別設定特定繪製緩衝區的 RGB 和 Alpha 混合方程式。

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

語法

js
blendEquationSeparateiOES(buf, modeRGB, modeAlpha)

引數

buf

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

modeRGB

一個 GLenum,指定如何組合源和目標 RGB 顏色分量。接受與 WebGLRenderingContext.blendEquationSeparate() 中的 modeRGB 引數相同的列舉值。

modeAlpha

一個 GLenum,指定如何組合源和目標 Alpha 顏色分量。接受與 WebGLRenderingContext.blendEquationSeparate() 中的 modeAlpha 引數相同的列舉值。

返回值

無(undefined)。

異常

  • 如果 buf 不是有效值,則會丟擲 gl.INVALID_VALUE 錯誤。
  • 如果 modeRGBmodeAlpha 未設定為可能值之一,則會丟擲 gl.INVALID_ENUM 錯誤。

示例

設定和獲取混合方程式

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

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

ext.blendEquationSeparateiOES(0, gl.FUNC_ADD, gl.FUNC_SUBTRACT);
ext.blendEquationSeparateiOES(1, gl.FUNC_ADD, gl.FUNC_SUBTRACT);

要獲取 gl.DRAW_BUFFER0gl.DRAW_BUFFER1 的混合方程式,請使用 WebGL2RenderingContext.getIndexedParameter() 查詢 BLEND_EQUATION_RGBBLEND_EQUATION_ALPHA 常量。

js
// For gl.DRAW_BUFFER0
gl.getIndexedParameter(gl.BLEND_EQUATION_RGB, 0);
gl.getIndexedParameter(gl.BLEND_EQUATION_ALPHA, 0);

// for gl.DRAW_BUFFER1
gl.getIndexedParameter(gl.BLEND_EQUATION_RGB, 1);
gl.getIndexedParameter(gl.BLEND_EQUATION_ALPHA, 1);

規範

規範
WebGL OES_draw_buffers_indexed 擴充套件規範

瀏覽器相容性

另見