OpenGL开发中经常需要在物体外层再绘制一层,但是又不能覆盖地面的那层事物,相当于透明效果。这种情况可以使用Blend(混合)技术来实现,使用方法如下:
sfactor 可取值包括:
GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA_SATURATE ;
dfactor 可取值包括:
GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA。
如果设源和目标的颜色数组分别为 S=(sR, sG, sB, sA) 和 D=(dR, dG, dB, dA) ,那么上面各个因子的取值可以表示为下面形式:
//开启混合
GLES20.glEnable(GLES20.GL_BLEND);
//设置混合因子c
glBlendFunc(sfactor, dfactor);
//TODO 绘制外层
//关闭混合
GLES20.glDisable(GLES20.GL_BLEND);
sfactor 及 dfactor 分别代表源和目标颜色在混合时所占比重的枚举常量,就是变换因子。
sfactor 可取值包括:
GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA_SATURATE ;
dfactor 可取值包括:
GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA。
如果设源和目标的颜色数组分别为 S=(sR, sG, sB, sA) 和 D=(dR, dG, dB, dA) ,那么上面各个因子的取值可以表示为下面形式:
GL_ZERO &#