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#WinForm程序调用vsto动态库,已解决
最近做一个vsto的项目,涉及到Form程序调用vsto动态库,弄了半天,搜了很多资料终于搞定了,把积累写下来备以后用.相关网址: https://stackoverflow.com/question ...
- Ubuntu Apache vhost不执行php小记
运行环境: Ubuntu : 16.04 PHP: 5.6.36 Apache: 2.4.18 出现/var/www/html 文件夹下的 php文件能够执行 vhost 配置文件的DocumentR ...
- CSIC_716_20191116【常用模块的用法 time ,datetime, random, os, sys, hashlib】
import time import datetime import os import sys import random import hashlib time模块 时间戳(Timestamp) ...
- thinkphp 调试模式
ThinkPHP有专门为开发过程而设置的调试模式,开启调试模式后,会牺牲一定的执行效率,但带来的方便和除错功能非常值得. 直线电机哪家好直线电机生产厂家 我们强烈建议ThinkPHP开发人员在开发阶段 ...
- 「题解」:X国的军队
问题 A: X国的军队 时间限制: 1 Sec 内存限制: 256 MB 题面 题面谢绝公开. 题解 简单贪心. 按照存活的士兵数量(即参加战斗的士兵数量减去阵亡的士兵数量)排序. 若存活士兵数量相 ...
- 期望dp——zoj3640
/* dp[i]表示力量为i时的期望 dp[i]=sum{tj}/n+sum{dp[i+cj]+1}/n //前一项是cj<i的和,后一项是cj>=i的和 初始状态dp[m] */ #in ...
- 获取硬件信息的delphi源码CPUID、操作系统、Mac物理地址、计算机名称、IP地址、用户名
{-----------------------------------------------------------------------------作者:sushengmiyan 2013.0 ...
- hexo next主题中遇到的关于require的timeout的问题。Uncaught Error: Load timeout for modules:
个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 背景 报错:Uncaught Error: L ...
- ubuntu 没有桌面 没有图标,只剩下壁纸
sudo apt-get update sudo apt-get install --reinstall ubuntu-desktop sudo apt-get install unity sudo ...
- DXP 笔记
1. 从原理图上添加 net class,快捷键 : P -> V -> C