WebGLRenderingContext: blendEquationSeparate() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

WebGLRenderingContext.blendEquationSeparate() 方法是 WebGL API 的一部分,用于分别设置 RGB 混合方程和 Alpha 混合方程。

混合方程决定了新像素如何与已在 WebGLFramebuffer 中的像素进行组合。

语法

js
blendEquationSeparate(modeRGB, modeAlpha)

参数

modeRGB

一个 GLenum,指定了源颜色和目标颜色的红、绿、蓝分量如何组合。必须是以下之一:

  • gl.FUNC_ADD: 源 + 目标 (默认值),

  • gl.FUNC_SUBTRACT: 源 - 目标,

  • gl.FUNC_REVERSE_SUBTRACT: 目标 - 源,

  • 使用 EXT_blend_minmax 扩展时

    • ext.MIN_EXT: 源和目标中的最小值,
    • ext.MAX_EXT: 源和目标中的最大值。
  • 使用 WebGL 2 上下文时,还可以使用以下值:

    • gl.MIN: 源和目标中的最小值,
    • gl.MAX: 源和目标中的最大值。
modeAlpha

一个 GLenum,指定了源颜色和目标颜色的 Alpha 分量(透明度)如何组合。必须是以下之一:

  • gl.FUNC_ADD: 源 + 目标 (默认值),

  • gl.FUNC_SUBTRACT: 源 - 目标,

  • gl.FUNC_REVERSE_SUBTRACT: 目标 - 源,

  • 使用 EXT_blend_minmax 扩展时

    • ext.MIN_EXT: 源和目标中的最小值,
    • ext.MAX_EXT: 源和目标中的最大值。
  • 使用 WebGL 2 上下文时,还可以使用以下值:

    • gl.MIN: 源和目标中的最小值,
    • gl.MAX: 源和目标中的最大值。

返回值

无(undefined)。

异常

如果 mode 不是这三个可能值之一,则会抛出 gl.INVALID_ENUM 错误。

示例

要设置混合方程,请使用:

js
gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_SUBTRACT);

要获取当前的混合方程,请查询 BLEND_EQUATIONBLEND_EQUATION_RGBBLEND_EQUATION_ALPHA 常量,它们会返回 gl.FUNC_ADDgl.FUNC_SUBTRACTgl.FUNC_REVERSE_SUBTRACT,或者如果启用了 EXT_blend_minmax 扩展:ext.MIN_EXText.MAX_EXT

js
gl.getParameter(gl.BLEND_EQUATION_RGB) === gl.FUNC_ADD;
// true

gl.getParameter(gl.BLEND_EQUATION_ALPHA) === gl.FUNC_ADD;
// true

规范

规范
WebGL 规范
# 5.14.3

浏览器兼容性

另见