美文网首页
OpenGL-颜色混合浅析

OpenGL-颜色混合浅析

作者: Tobesky | 来源:发表于2019-05-17 01:21 被阅读0次

基础理论

在OpenGL中,物体透明技术通常被叫做混合(Blending)。

OpenGL渲染时会把颜色值存在颜色缓存区中深度值放在深度缓冲区

深度缓冲区被关闭时,新的颜色将简单的覆盖原来颜色缓存区存在的颜色值,

当深度缓冲区再次打开时,新的颜色片段只是当它们比原来的值更接近邻近的裁剪平面才会替换原来的颜色片段

OpenGL 会把源颜色和目标颜色各自取出,并乘以一个系数(源颜色乘以的系数称为“源因子”,目标颜色乘以的系数称为“目标因子”),然后相加,这样就得到了新的颜色。(也可以不是相加,新版本的OpenGL可以设置运算方式,包括加、减、取两者中较大的、取两者中较小的、逻辑运算等)

用数学公式来表达一下这个运算方式。

假设源颜色的四个分量(指红色,绿色,蓝色,alpha值)是(Rs, Gs, Bs, As),目标颜色的四个分量是(Rd, Gd, Bd, Ad),又设源因子为(Sr, Sg, Sb, Sa),目标因子为(Dr, Dg, Db, Da)。则混合产生的新颜色可以表示为:

(Rs*Sr+Rd*Dr, Gs*Sg+Gd*Dg, Bs*Sb+Bd*Db, As*Sa+Ad*Da)

当然了,如果颜色的某一分量超过了1.0,则它会被自动截取为1.0,不需要考虑越界的问题。

如何使用

// 使用OpenGL的混合功能
glEnable(GL_BLEND);

// 关闭OpenGL的混合功能
glDisable(GL_BLEND);

混合函数

// 设置混合因子,需要用到glBlendFun函数
// S:源混合因子
// D:目标混合因子
glBlendFunc(GL enum S,GLenum D);
混合因子

常用混合函数

glBlendFunc(GL_ SRC ALPHA,GL ONE_ MINUS SRC ALPHA);

相关文章

  • OpenGL-颜色混合浅析

    基础理论 在OpenGL中,物体透明技术通常被叫做混合(Blending)。 OpenGL渲染时会把颜色值存在颜色...

  • OpenGL-颜色混合

    在一般情况下,OpenGL在渲染时把颜色值存放在颜色缓冲区中,把每个片段(像素)的深度值存放在深度缓冲区中。当深度...

  • OpenGL-索引绘图 + 纹理颜色混合

    1.创建上下文 GLKit视图配置完成之后,我们需要创建一个OpenGL ES上下文,并设置为当前有效。 2.设置...

  • OpenGL-多边形偏移和颜色混合

    上一篇文章我们讲到了使用深度测试可以解决隐藏面消除的问题。并且效果看起来很完美,但是深度测试真的就没有一点问题吗?...

  • 十二 浅析OpenGL的颜色混合

    1 颜色混合效果 2 什么情况下使用 在固定着色器或者可编程着色器中,开启颜色混合(glEnable(GL_Bl...

  • OpenGL颜色混合原理

    这就是颜色混合 一。什么情况下会用到颜色混合:1.在固定着色器或者可编程着色器中,开启颜色混合(glEnable(...

  • OpenGL-矩阵压栈出栈浅析

    OpenGL绘制图形需要经过变化才能达到用户目的,而变换是通过矩阵进行操作的。 OpenGL一般通过视图变换、模型...

  • OpenGL-初识

    Title: OpenGL-初识Date: 2016-06-15 10:00Modified: 2016-07-1...

  • OpenGL --混合、多重采样

    颜色混合 在OpenGL中使用glEnable(GL_BlEND)来开启颜色混合。目标颜色:已经存储在颜色缓存区的...

  • OpenGL-由实例理解概念

    Title: OpenGL-由实例理解概念Date: 2016-07-10 22:00Modified: 2016...

网友评论

      本文标题:OpenGL-颜色混合浅析

      本文链接:https://www.haomeiwen.com/subject/prugaqtx.html