[OpenGL]混合 Blend

一、什么叫混合

直白的说,混合就是将源颜色(新片断)与目标颜色(侦缓冲区中的)进行某种组合,然后将新颜色放入侦缓冲区。另外进行混合前先要进行 Alpha 测试,决定是否接受此片断。

二、混合的原理

先来定义几个概念:

1. 源颜色 (Rs, Gs, Bs, As)

2. 目标颜色 (Rd, Gd, Bd, Ad)

3. 源混合因子(Sr, Sg, Sb, Sa)

4. 目标混合因子(Dr, Dg, Db, Da)

最终混合的颜色为(RsSr + RdDr, GsSg + GdDg, BsSb + BdDb, AsSa + AdDa)  (这个公式真绕人)

三、混合的实现

1. 先要启用混合 glEnable(GL_BLEND)

2. 源混合因子与目标混合因子的设置:

void glBlendFunc(GLenum srcfactor, GLenum destfactor)

参数是枚举的,代表了不同的混合因子。

四、问题

1. 由于OpenGL光照时,是没有考虑材料颜色的(也就是glColor给顶点上的颜色),那么当我开了光照后,混合是怎么计算的?

你可能感兴趣的:(OpenGL,混合)