Blend SrcFactor DstFactor//只设置因子,如果前面不跟BlendOp,默认BlendOp Add 操作。
Color = SrcFactor*S + DstFactor*D//包含了rgba。
其中S表示源颜色当前片元输出的颜色,D表示目标颜色缓存区中的颜色。SrcFactor、DstFactor表示因子。
所有因子如下:
One 1
Zero 0
SrcColor 源颜色
SrcAlpha 源颜色的Alpha值
DstColor 目标颜色
DstAlpha 目标Alpha值
OneMinusSrcColor 1-源颜色值
OneMinusSrcAlpha 1-源Alpha值
OneMinusDstColor 1-目标颜色
OneMinusDstAlpha 1-目标Alpha值
使用例子如下:Blend SrcAlpha OneMinusSrcAlpha //可以实现一般的带alpha通道的图片效果。
BlendOp Operation:Operation是混合操作,用完之后记得加后面的blend命令,有些操作不加Blend会出现黑色的情况如下:
Add 将源颜色和目标颜色相加(默认的混合操作,即不写blendOp命令时,默认使用该操作)
Color = SrcFactor*S + DstFactor*D
Sub 用源颜色减去目标颜色
Color = SrcFactor*S - DstFactor*D
RevSub 用目标颜色减去源颜色,如果不加Blend 命令会是黑色的
Color = DstFactor*D - SrcFactor*S
Min 取源颜色和目标颜色重最小的值,按逐分量比较,后面跟再跟Blen命令,貌似没有什么用。
ColorR = min(Sr,Dr)
ColorG = min(Sg,Dg)
ColorB = min(Sb,Db)
ColorA = min(Sa,Da)
Max 取源颜色和目标颜色重最大的值,按逐分量比较,后面跟再跟Blen命令,貌似没有什么用。
ColorR = max(Sr,Dr)
ColorG = max(Sg,Dg)
ColorB = max(Sb,Db)
ColorA = max(Sa,Da)
几种常见的混合类型:
//正常(Normal)
Blend SrcAlpha OneMinusSrcAlpha
//柔和相加(Soft Addtive)
Blend OneMinusDstAlpha One
//正片叠底(Multiply),即相乘
Blend DstColor Zero
//两倍相乘(2x Multiply)
Blend DstColor SrcColor
//变暗(Darken)
BlendOp Min
//变亮(Lighten)
BlendOp Max
//滤色(Screen)
Blend OneMinusDstColor One
//线性减淡(Linear Dodge)
Blend One One