WebGLRenderingContext.blendFunc
blendfunc方法用来定义混合像素运算的函数。
语法
void gl.blendFunc(sfactor, dfactor);
参数
sfactor
GLenum类型,定义源混合因子的乘数。默认的值是gl.ONE。可能的值见下表。
dfactor
GLenum类型,定义目标混合因子的乘数。默认的值是gl.ZERO。可能的值见下表。
错误抛出
如果sfactor或dfactor不是下表中列出的值,gl.INVALID_ENUM错误会被抛出。
返回值
无
常量
下列的常量可用作sfactor和dfactor。
混合颜色的公式可被描述为:颜色值(RGBA) = (源颜色值 * sfactor) + (目标颜色值 * dfactor)。RBGA值是在0-1之间的。
常量 | 因子 | 描述 |
---|---|---|
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.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);
获得现有的混合函数,询问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.getParameter(gl.BLEND_SRC_RGB) == gl.SRC_COLOR; // true
规范
浏览器兼容
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;