[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给顶点上的颜色),那么当我开了光照后,混合是怎么计算的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值