登录 注册
当前位置:主页 > 资源下载 > 50 > 在c/c++嵌入式系统编程中,涉及源因子和目标因子

在c/c++嵌入式系统编程中,涉及源因子和目标因子

  • 更新:2024-06-23 23:46:14
  • 大小:859KB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:嵌入式 - 硬件开发
  • 格式:PDF

资源介绍

一、 源因子和目标因子 前面我们已经提到,混合需要把原来的颜色和将要画上去的颜色找出来,经过某种方式 处理后得到一种新的颜色。这里把将要画上去的颜色称为“源颜色”,把原来的颜色称为 “目标颜色”。 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,不需要考虑越界的 问题。 源因子和目标因子是可以通过 glBlendFunc 函数来进行设置的。glBlendFunc 有两个参数, 前者表示源因子,后者表示目标因子。这两个参数可以是多种值,下面介绍比较常用的 几种。 GL_ZERO: 表示使用 0.0 作为因子,实际上相当于不使用这种颜色参与混合运算。 GL_ONE: 表示使用 1.0 作为因子,实际上相当于完全的使用了这种颜色参与混合运 算。 GL_SRC_ALPHA:表示使用源颜色的 alpha 值来作为因子。 GL_DST_ALPHA:表示使用目标颜色的 alpha 值来作为因子。 GL_ONE_MINUS_SRC_ALPHA:表示用 1.0 减去源颜色的 alpha 值来作为因子。 GL_ONE_MINUS_DST_ALPHA:表示用 1.0 减去目标颜色的 alpha 值来作为因子。