OES_draw_buffers_indexed: blendEquationSeparateiOES() 方法

基线 2022

新可用

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 扩展规范

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅