WebGLRenderingContext.blendFuncSeparate

blendFuncSeparate方法用来分开定义混合颜色和alpha像素运算的函数。

语法

void gl.blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);

参数

srcRGB

GLenum类型,定义源混合因子红、绿、蓝的乘数。默认的值是gl.ONE。可能的值见下表。

dstRGB

GLenum类型,定义目标混合因子红、绿、蓝的乘数。默认的值是gl.ZERO。可能的值见下表。

srcAlpha

GLenum类型,定义源混合因子alpha的乘数。默认的值是gl.ONE。可能的值见下表。

dstAlpha

GLenum类型,定义目标混合因子alpha的乘数。默认的值是gl.ONE。可能的值见下表。

错误抛出

如果srcRGB, dstRGB, srcAlpha, or dstAlpha不是下表中列出的值,gl.INVALID_ENUM错误会被抛出。

返回值

常量

下列的常量可用作srcRGB, dstRGB, srcAlpha, 或 dstAlpha。

混合颜色的公式可被描述为(所有RBGA值是在0-1之间):

  • 颜色值(RGB) = (源颜色值 * srcRGB) + (目标颜色值 * dstRGB)

  • 值(A) = (源Alpha值 * srcAlpha) + (目标Alpha值 * dstAlpha)

常量 RGB因子 Alpha因子 描述
gl.ZERO 0,0,0 0 所有颜色都乘以0
gl.ONE 1,1,1 1 所有颜色都乘以1
gl.SRC_COLOR Rs,Gs,Bs As 所有颜色都乘以源颜色值
gl.ONE_MINUS_SRC_COLOR 1-Rs,1-Gs,1-Bs 1-As 所有颜色都乘以1减每个源颜色值
gl.DST_COLOR Rd,Gd,Bd Ad 所有颜色都乘以目标颜色值
gl.ONE_MINUS_DST_COLOR 1-Rd,1-Gd,1-Bd 1-Ad 所有颜色都乘以1减每个目标颜色值
gl.SRC_ALPHA As,As,As As 所有颜色都乘以源alpha值
gl.ONE_MINUS_SRC_ALPHA 1-As,1-As,1-As 1-As 所有颜色都乘以1减源alpha值
gl.DST_ALPHA Ad,Ad,Ad Ad 所有颜色都乘以目标alpha值
gl.ONE_MINUS_DST_ALPHA 1-Ad,1-Ad,1-Ad 1-Ad 所有颜色都乘以1减目标alpha值
gl.SRC_ALPHA_SATURATE min(As,1-Ad),min(As,1-Ad),min(As,1-Ad) 1 所有GRB颜色乘以源alpha值和1减目标alpha值中的最小值。alpha值乘以1。

例子

要使用混合函数,首先必须要激活混合,使用 以gl.BLEND为参数的WebGLRenderingContext.enable()。

gl.enable(gl.BLEND);
gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);

获得现有的混合函数,询问BLEND_SRC_RGB, BLEND_SRC_ALPHA, BLEND_DST_RGB和 BLEND_DST_ALPHA常数,可返回混合函数常数之一。

gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);
gl.getParameter(gl.BLEND_SRC_RGB) == gl.SRC_COLOR;
// true

规范

WebGL 1.0

OpenGL ES 2.0

浏览器兼容

Desktop:Chrome 9、Firefox 4.0 、 Internet Explorer 11 、Opera 12、Safari 5.1;

Mobile: Android ?、 Chrome for Android 25、 Firefox Mobile (Yes)、 IE Mobile ?、 Opera Mobile 12、 Safari Mobile 8.1;

results matching ""

    No results matching ""