OES_draw_buffers_indexed: blendFuncSeparateiOES() 方法
OES_draw_buffers_indexed
WebGL 扩展的 blendFuncSeparateiOES()
方法定义了在分别对特定绘制缓冲区的 RGB 和 alpha 分量混合像素时使用的函数。
有关同时设置 RGB 和 alpha 的信息,请参阅 OES_draw_buffers_indexed.blendFunciOES()
;有关此方法的 WebGL 1 版本,请参阅 WebGLRenderingContext.blendFuncSeparate()
。
语法
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
错误。 - 如果
srcRGB
、dstRGB
、srcAlpha
或dstAlpha
不是可能的取值之一,则会抛出gl.INVALID_ENUM
错误。 - 与
WebGLRenderingContext.blendFuncSeparate()
相同的混合限制适用:如果常量颜色和常量 alpha 值一起用作源和目标因子,则会抛出gl.INVALID_ENUM
错误。
示例
设置和获取混合函数
以下设置了绘制缓冲区 gl.DRAW_BUFFER0
(其中 buf
为 0 的调用)和 gl.DRAW_BUFFER1
(其中 buf
为 1 的调用)的混合函数。
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_BUFFER0
和 gl.DRAW_BUFFER1
绘制缓冲区的混合函数,请使用 WebGL2RenderingContext.getIndexedParameter()
查询 BLEND_SRC_RGB
、BLEND_SRC_ALPHA
、BLEND_DST_RGB
和 BLEND_DST_ALPHA
常量。
// 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 的浏览器中加载。