osg::BlendFunc介绍

混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。
      假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将要绘制上去的红色和原来的绿色进行混合,于是得到一种新的颜色,看上去就好像玻璃是半透明的。

源因子和目标因子

下面用数学公式来表达一下这个运算方式。假设源颜色的四个分量(指红色,绿色,蓝色,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)

DST_ALPHA

表示使用目标颜色的alpha值来作为因子。

DST_COLOR

把目标颜色的四个分量分别作为因子的四个分量

ONE

表示使用1.0作为因子,实际上相当于完全的使用了这种颜色参与混合运算

ONE_MINUS_DST_ALPHA

表示用1.0减去目标颜色的alpha值来作为因子。

ONE_MINUS_DST_COLOR

表示用1.0减去目标颜色的颜色值来作为因子。

ONE_MINUS_SRC_ALPHA

表示用1.0减去源颜色的alpha值来作为因子。

ONE_MINUS_SRC_COLOR

表示用RGB(1,1,1,1)减去源颜色的值来作为因子。

SRC_ALPHA

表示使用源颜色的alpha值来作为因子。

SRC_ALPHA_SATURATE

(f,f,f,1); f=min(As,1-Ad)

SRC_COLOR

把源颜色的四个分量分别作为因子的四个分量

CONSTANT_COLOR

自定义的颜色作为因子

ONE_MINUS_CONSTANT_COLOR

表示用RGB(1,1,1,1)减去自定义的颜色作为因子

CONSTANT_ALPHA

自定义的alpha作为因子

ONE_MINUS_CONSTANT_ALPHA

表示用1.0减去自定义颜色的alpha值来作为因子。

ZERO

表示使用0.0作为因子,实际上相当于不使用这种颜色参与混合运算。

更灵活的还有

osg::BlendEquation

常用的混合方程:

S,D表示因子(见osg::BlendFunc),Cs和Cd表示源颜色和目标颜色

RGBA_MIN 

min(CsS,CdD)

RGBA_MAX 

max(CsS,CdD)

ALPHA_MIN 

 

ALPHA_MAX 

 

LOGIC_OP 

 

FUNC_ADD 

CsS+CdD

FUNC_SUBTRACT 

CsS-CdD

FUNC_REVERSE_SUBTRACT 

CdD -CsS

转载至http://blog.csdn.net/zhuqinglu/article/details/1782201

osg::BlendFunc来设置透明度的更多相关文章

  1. css中怎么设置透明度的问题

    小伙伴们是不是在找怎么样去设置页面的透明度的方法呢...别找了,我这儿就有,而且肯定够用了. 我自己会用到的就有两种,可以和大家分享一下. 1.用opcity的方法去设置透明度.代码如下: .div ...

  2. IOS 设置透明度导致底层View始终可见

    正确效果如图:下面的toolBar应该看不见它下面的View, 避免方法:[self.view  addSubView:aSubView];这个aSubView一定不能设置不透明度,应将其设置为Cle ...

  3. android 控件设置透明度

    问题:java文件中引用组件设置透明度:mGuideLayout.getBackground().setAlpha(125); 一直报null 修改办法:对应的布局文件中添加 android:back ...

  4. OSG环境变量设置

    osg中需要设置一些环境变量设置,如 OSG_FILE_PATH:此变量设置模型数据的目录 OSG_SCREEN: 此变量设置显示模型是在单屏幕还是多屏幕,1为单屏幕 OSG_WINDOW: 此变量设 ...

  5. cocos2dx对所有子节点设置透明度

    看到cocos2dx2.2.5发布了,修复了输入框的bug,于是我们的项目也升级到了2.2.5, 升级过程还是比较顺利,没想到后来发现设置透明度无效了. 经过调试发现要调用一下setCascadeOp ...

  6. java 图片加水印,设置透明度。说明非常具体

    package com.yidao.common; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...

  7. sublime text3使用插件SublimeTextTrans设置透明度

    推荐一款在windows上设置sublime2和sublime3背景透明度的插件:SublimeTextTrans, 下载地址:https://github.com/vhanla/SublimeTex ...

  8. (求助)对某一颜色,设置透明度 alpha 后,其他使用该颜色的地方 受到影响!!!!原因未知

    对某一颜色,设置透明度 alpha 后,其他使用该颜色的地方 受到影响!!!!原因未知,有谁碰到过这样的问题?????? 测试了以下三款手机,结果如下: 1.android 4.4.2: 不受影响 2 ...

  9. C#给图片加水印,可设置透明度

    C#给图片加水印,可设置透明度,设置水印的位置可以看一下上一篇哈 /// <summary> /// Creating a Watermarked Photograph with GDI+ ...

随机推荐

  1. C++之控制内存分配

    一.内存分配方式 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区.栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释 ...

  2. python 随便笔记

    1 判断字符串中是否有数字 i.isdigit()==True else False #判断是否是数字i.isalpha()==True else False #判断是否是字母 i.isspace() ...

  3. SpringCloudConfig

    方便服务配置文件统一管理,实时更新 组成 在spring cloud config组件中,分两个角色,一是config server,二是config client Config Server是一个可 ...

  4. Windos DNS Client 缓存

    要查看 DNS 缓存,请在命令提示符下键入 ipconfig /displaydns. 要从 DNS 缓存中删除该项,请在命令提示符下键入 ipconfig /flushdns. ipconfig.e ...

  5. System.Web.Mvc.HttpGetAttribute.cs

    ylbtech-System.Web.Mvc.HttpGetAttribute.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, P ...

  6. System.Object.cs

    ylbtech-System.Object.cs 1.程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5619 ...

  7. 【Vue】组件的基础与组件间通信

    转载:https://segmentfault.com/a/1190000016409329 Vue.js 最核心的功能就是组件(Component),从组件的构建.注册到组件间通信,Vue .x 提 ...

  8. 实验室系统tomcat 6 java.lang.OutOfMemoryError: Java heap space

    java.lang.OutOfMemoryError: Java heap space

  9. hive 总结四(优化)

    本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 表的优化 小表join大表.大表join小表 将key相对分散,并且数据量小的表放在join的左边 ...

  10. 修改 ulimit 参数

    sudo vim /etc/security/limits.conf 文件下加: * hard nofile 999999 * soft nofile 999999 * soft nproc 1024 ...