OPENGL颜色混合
来源:互联网 发布:mac硬件温度检测 编辑:程序博客网 时间:2024/06/05 14:40
1.颜色混合
混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将要绘制上去的红色和原来的绿色进行混合,于是得到一种新的颜色,看上去就好像玻璃是半透明的。
2.OPENGL实现
只有在RGBA模式下,才可以使用混合功能。
要使用OpenGL的混合功能,只需要调用:glEnable(GL_BLEND);
要关闭OpenGL的混合功能,只需要调用:glDisable(GL_BLEND);
算法:
混合需要把原来的颜色和将要画上去的颜色找出来,经过某种方式处理后得到一种新的颜色。这里把将要画上去的颜色称为“源颜色”,把原来的颜色称为“目标颜色”。
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,不需要考虑越界的问题。
API:
源因子和目标因子设置
glBlendFunc(src,dst)
glBlendFunc前者表示源因子,后者表示目标因子
- 颜色混合opengl
- 颜色混合opengl
- 颜色混合opengl
- 颜色混合opengl
- 颜色混合opengl
- OpenGL颜色混合
- 颜色混合opengl
- OpenGL: 颜色混合
- 颜色混合opengl
- 颜色混合OpenGL
- opengl颜色混合
- 颜色混合opengl
- OPENGL颜色混合
- opengl颜色混合
- 转 颜色混合opengl
- 颜色混合opengl (转)
- 颜色混合opengl--glBlendFunc函数
- 颜色混合opengl (转)
- AlertDialog 源码布局调整
- 关于“平衡”与“常识”的一点想法
- 机器视觉数据集链接
- 使用phpredis批量向sort set中加入元素
- Oracle表名称和字段名称区分大小写
- OPENGL颜色混合
- STM32学习笔记
- 关于python及nump,scipy,matlplotlib,scikit-learn的安装的体会总结
- 线程的五种状态
- 蓝桥杯 算法训练 Car的旅行路线 By Assassin [Floryd]
- 深度学习框架Keras简介
- Socket通讯
- CSS布局:图片在DIV中上下左右居中(水平和垂直都居中)
- 康托逆运算