OES_draw_buffers_indexed: blendFuncSeparateiOES() 方法

基线 2022

新可用

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

浏览器兼容性

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

另请参阅