混合技术
混合技术就是将俩个片元调和,主要用于将通过各项测试准备进入帧缓冲的片元(源片元)与原有片元按照设定的比例加权计算出最终片元的颜色值。
OpenGL ES 2.0中是通过设置混合因子来指定两个片元的加权比例的。
经过加权计算后,最终片元的某些通道值可能会超过1.0,此时渲染管线会自动执行截取操作,将大于1.0的通道值设置为1.0
OpenGL ES系统预置因子值
常量名 | RGB混合因子 | A混合因子 |
GL_ZERO | [0,0,0] | 0 |
GL_ONE | [1,1,1] | 1 |
GL_SRC_COLOR | [Rs,Gs,Bs] | As |
GL_ONE_MINUS_SRC_COLOR | [1-Rs,1-Gs,1-Bs] | 1-As |
GL_DST_COLOR | [Rd,Gd,Bd] | Ad |
GL_ONE_MINUS_DST_COLOR | [1-Rd,1-Gd,1-Bd] | 1-Ad |
GL_SRC_ALPHA | [As,As,As] | As |
GL_SRC_MINUS_SRC_ALPHA | [1-As,1-As,1-As] | 1-As |
GL_DST_ALPHA | [Ad,Ad,Ad] | Ad |
GL_SRC_MINUS_DST_ALPHA | [1-Ad,1-Ad,1-Ad] | 1-Ad |
GL_SRC_ALPHA_STAURATE | [f,f,f] f=min(As,1-Ad) | 1 |
常量中有SRC的代表各通道值来自源片元,有DST的代表各通道值来自目标片元,另外GL_SRC_STAURATE只能用作源因子。
纹理灰度值:从RGB通道中采样出的颜色值求平均。
//开启混合
GLES20.glEnable(GLES20.GL_BLEND);
//设置混合因子
GLES20.glBlendFunc(GLES20.GL_SRC_COLOR, GLES20.GL_ONE_MINUS_SRC_COLOR);