osg::BlendFunc来设置透明度
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来设置透明度的更多相关文章
- css中怎么设置透明度的问题
小伙伴们是不是在找怎么样去设置页面的透明度的方法呢...别找了,我这儿就有,而且肯定够用了. 我自己会用到的就有两种,可以和大家分享一下. 1.用opcity的方法去设置透明度.代码如下: .div ...
- IOS 设置透明度导致底层View始终可见
正确效果如图:下面的toolBar应该看不见它下面的View, 避免方法:[self.view addSubView:aSubView];这个aSubView一定不能设置不透明度,应将其设置为Cle ...
- android 控件设置透明度
问题:java文件中引用组件设置透明度:mGuideLayout.getBackground().setAlpha(125); 一直报null 修改办法:对应的布局文件中添加 android:back ...
- OSG环境变量设置
osg中需要设置一些环境变量设置,如 OSG_FILE_PATH:此变量设置模型数据的目录 OSG_SCREEN: 此变量设置显示模型是在单屏幕还是多屏幕,1为单屏幕 OSG_WINDOW: 此变量设 ...
- cocos2dx对所有子节点设置透明度
看到cocos2dx2.2.5发布了,修复了输入框的bug,于是我们的项目也升级到了2.2.5, 升级过程还是比较顺利,没想到后来发现设置透明度无效了. 经过调试发现要调用一下setCascadeOp ...
- java 图片加水印,设置透明度。说明非常具体
package com.yidao.common; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...
- sublime text3使用插件SublimeTextTrans设置透明度
推荐一款在windows上设置sublime2和sublime3背景透明度的插件:SublimeTextTrans, 下载地址:https://github.com/vhanla/SublimeTex ...
- (求助)对某一颜色,设置透明度 alpha 后,其他使用该颜色的地方 受到影响!!!!原因未知
对某一颜色,设置透明度 alpha 后,其他使用该颜色的地方 受到影响!!!!原因未知,有谁碰到过这样的问题?????? 测试了以下三款手机,结果如下: 1.android 4.4.2: 不受影响 2 ...
- C#给图片加水印,可设置透明度
C#给图片加水印,可设置透明度,设置水印的位置可以看一下上一篇哈 /// <summary> /// Creating a Watermarked Photograph with GDI+ ...
随机推荐
- C++之控制内存分配
一.内存分配方式 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区.栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释 ...
- python 随便笔记
1 判断字符串中是否有数字 i.isdigit()==True else False #判断是否是数字i.isalpha()==True else False #判断是否是字母 i.isspace() ...
- SpringCloudConfig
方便服务配置文件统一管理,实时更新 组成 在spring cloud config组件中,分两个角色,一是config server,二是config client Config Server是一个可 ...
- Windos DNS Client 缓存
要查看 DNS 缓存,请在命令提示符下键入 ipconfig /displaydns. 要从 DNS 缓存中删除该项,请在命令提示符下键入 ipconfig /flushdns. ipconfig.e ...
- System.Web.Mvc.HttpGetAttribute.cs
ylbtech-System.Web.Mvc.HttpGetAttribute.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, P ...
- System.Object.cs
ylbtech-System.Object.cs 1.程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5619 ...
- 【Vue】组件的基础与组件间通信
转载:https://segmentfault.com/a/1190000016409329 Vue.js 最核心的功能就是组件(Component),从组件的构建.注册到组件间通信,Vue .x 提 ...
- 实验室系统tomcat 6 java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
- hive 总结四(优化)
本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 表的优化 小表join大表.大表join小表 将key相对分散,并且数据量小的表放在join的左边 ...
- 修改 ulimit 参数
sudo vim /etc/security/limits.conf 文件下加: * hard nofile 999999 * soft nofile 999999 * soft nproc 1024 ...