OES_draw_buffers_indexed: blendFunciOES() 方法

基线 2022

新功能

2022 年 12 月起,此功能在最新的设备和浏览器版本中均可使用。此功能可能无法在旧设备或浏览器中使用。

OES_draw_buffers_indexed WebGL 扩展的 blendFunciOES() 方法定义了为特定绘制缓冲区混合像素时使用的函数。

有关分别设置 RGB 和 alpha 分量的设置,请参阅 OES_draw_buffers_indexed.blendFuncSeparateiOES();有关此方法的 WebGL 1 版本,请参阅 WebGLRenderingContext.blendFunc()

语法

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

浏览器兼容性

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

另请参见