OpenGL ES 3. 混合详解

大家好,接下来将为大家介绍OpenGL ES 3. 混合。

 1、混合的用途

        现实世界中有很多半透明的物体,如果希望在场景中真实再现此类物体,最常用的技术就是混合。

        颜色缓冲区存储着像素点的颜色信息,当深度缓冲区开启时,当该像素点深度小于原来的深度时的颜色信息就会被替换为新的颜色信息。当我们的颜色携带透明度信息时,就需要用到混合。

        混合技术就是将两个片元调和,主要用于将通过各项测试准备进入帧缓冲的片元 (源片元)与帧缓冲中的原有片元(目标片元)按照设定的比例加权计算出最终片元的颜色值。也就是说在启用了混合的情况下,新片元将不再是直接覆盖缓冲区中的原片元,而是对两个片元进行加权计算。

2、混合颜色输入

目标颜色:已经存储在颜色缓存区的颜色值。
源颜色:作为当前渲染命令被传进入颜色缓存区的颜色值。
当混合功能被启动时,源颜色和⽬标颜色的组合方式是混合方程式控制的。

在默认情况下,混合⽅方程式如下所示:
Cf = (Cs * S) + (Cd * D) 。
Cf:最终计算参数的颜色。
Cs:源颜色。
Cd:目标颜色。
S:源混合因子。
D:⽬标混合因子。

3、开启混合方式

开启混合

glEnable(GL_BlEND)

设置混合因子

glBlendFunc(GLenum S,GLenum D)

S:源混合因⼦
D:目标混合因⼦

关闭混合

glDisable(GL_BlEND)


混合因子如下图:

 

选择混合⽅程式的函数:

glbBlendEquation(GLenum mode)

glBlendFuncSeparate函数:

除了能使用glBlendFunc 来设置混合因子,还可以有更灵活的选择。

void glBlendFuncSeparate(GLenum strRGB,GLenum dstRGB ,GLenum strAlpha,GLenum dstAlpha);
strRGB: 源颜色的混合因子
dstRGB: ⽬标颜色的混合因子 
strAlpha: 源颜色的Alpha因子 
dstAlpha: ⽬标颜色的Alpha因子

glBlendFunc指定源和⽬标 RGBA值的混合函数;
glBlendFuncSeparate函数则允许为RGB 和 Alpha 成分单独指定混合函数
GL_CONSTANT_COLOR、GL_ONE_MINUS_CONSTANT_COLOR、GL_CONSTANT_ALPHA、GL_ONE_MINUS_CONSTANT值允许混合方程式中引入一个常量混合颜色。

 

最后,欢迎大家一起交流学习:微信:liaosy666 ; QQ:2209115372 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值