OpenGL-入门-二维混合

glEnable(GL_BLEND);//开启 OpenGL 的混合
glDisable(GL_BLEND);//关闭 OpenGL 的混合

glBlendFunc(源因子,标因子);

混合是什么呢?

混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种 方式混在一起,从而实现特殊的效果。
假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制 红色玻璃的时候,利用“混合”功能,把将要绘制上去的红色和原来的绿色进行混合,于是得到一种新的颜色,看上去就好像 玻璃是半透明的。
要使用 OpenGL 的混合功能,只需要调用:glEnable(GL_BLEND);即可。
要关闭 OpenGL 的混合功能,只需要调用:glDisable(GL_BLEND);即可。
注意:只有在 RGBA 模式下,才可以使用混合功能,颜色索引模式下是无法使用混合功能的。混合是什么呢?混合就是把两 种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊 的效果。

一、源因子和目标因子

前面我们已经提到,混合需要把原来的颜色和将要画上去的颜色找出来,经过某种方式处理后得到一种新的颜色。这里把将要画上去的颜色称为“源颜色”,把原来的颜色称为“目标颜色”。
  对应源颜色乘对应“源因子”的结果,与对应目标颜色乘对应 “目标因子”的结果,经过运算,得到新的颜色。
   用数学公式来表达一下这个运算方式,假设:
   源颜色的四个分量(指红色,绿色,蓝色,alpha 值)是(Rs, Gs, Bs, As),设源因子为(Sr, Sg, Sb, Sa);
   目标颜色的四个分量是(Rd, Gd, Bd, Ad),设目标因子为(Dr, Dg, Db, Da)。
   则混合产生的新颜色可以表示为: (Rs*Sr+Rd*Dr, Gs*Sg+Gd*Dg, Bs*Sb+Bd*Db, As*Sa+Ad*Da)
   当然了,如果颜色的某一分量超过了 1.0,则它会被自动截取为 1.0,不需要考虑越界的问题。
   注意: 所谓源颜色和目标颜色,是跟绘制的顺序有关。假如先绘制了一个红色的物体,再在其上绘制绿色的物体。则绿色是源颜色,红色是目标颜色。如果顺序反过来,则红色就是源颜色,绿色才是目标颜色。在绘制时,应该注意顺序,使得绘制的源颜色与设置的源因子对应,目标颜色与设置的目

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值