OpenGL融合
来源:互联网 发布:个人博客搭建数据库 编辑:程序博客网 时间:2024/04/19 17:51
转自:http://kingcent.wikispaces.com/OpenGL%E8%9E%8D%E5%90%88?showComments=1
如果一个像素的alpha通道数值为0%,那它就是完全透明的(也就是看不见的),而数值为100%则意味着一个完全不透明的像素(传统的数字图像)。
将要画上去的颜色称为“源颜色”,受“源因子”影响;原来的颜色称为“目标颜色”,受“目标因子”影响。
在OpenGL中,要进行融合处理,首先要生成用于融合计算的两个因之,一个是源因子,一个是目标因
子。完成此功能的函数是glBlendFunc()
void glBlendFunc(GLenum sfactor,GLenum dfactor);
sfactor说明如何计算源因子; dfactor说明如何计算目标因子;
Sfactor的取值
常量最终源因子GL_zero(0,0,0,0)GL_one(1,1,1,1)GL_DST_COLOR(Rd,Gd,Bd,Ad)GL_ONE_MINUS_DST_COLOR(1,1,1,1)-( Rd,Gd,Bd,Ad)GL_SRC_ALPHA(As,As,As,As)GL_ONE_MINUS_SRC_ALPHA(1,1,1,1)-(As,As,As,As)GL_DST_ALPHA(Ad,Ad,Ad,Ad)GL_ONE_MINUS_DST_ALPHA(1,1,1,1)-(Ad,Ad,Ad,Ad)GL_SRC_ALPHA_SATURATE(f,f,f,1)Dfactor的参数取值
常 量最终目标因子GL_ZERO(0,0,0,0)GL_ONE(1,1,1,1)GL_SRC_COLOR(Rs,Gs,Bs,As)GL_ONE_MINUS_SRC_COLOR(1,1,1,1)-(Rs,Gs,Bs,As)GL_SRC_ALPHA(As,As,As,As)GL_ONE_MINUS_SRC_ALPHA(1,1,1,1)-(As,As,As,As)GL_DST_ALPHA(Ad,Ad,Ad,Ad)GL_ONE_MINUS_DST_ALPHA(1,1,1,1)- (Ad,Ad,Ad,Ad)假设源物体的一个点的颜色值为(0.7,0.6,0.8,0.6),目标物体在同一个点的颜色值为(0.4,0.3,0.6,1.0);OpenGL首先获得源物体颜色向量中的Alpha值,为0.6,用它作为融合的源因子,然后用它乘以源物体的颜色向量,得(0.42,0.36,0.48,0.36);通过GL_ONE_MINUS_SRC_COLOR获得用于融合的目标因子,1-0.6=0.4,然后用它乘以目标物体的颜色向量,得(0.16,0.12,0.24,0.4);最后将两个颜色向量相加获得最终的颜色(0.58,0.48,0.72,0.76).
设融合的源因子为(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)
OpenGL通过glEnable(GL_BLEND)、glDisable(GL_BLEND)启动和关闭功能
要制作三维的透明物体,简单地启动融合功能和给定融合因子是不够的,因为三维物体间有其位置的
相互关系,体现这种关系的是物体离视点的远近。
一般来说应当先画不透明的物体,因为透明物体的绘制需要OpenGL的融合功能,但是融合功能一旦启
动,就会影响整个后继物体的着色。OpenGL一旦画完不透明物体就立即将深度缓存进行屏蔽,避免了已绘制的不透明物体的深度信息被破坏。
应用OpenGL融合技术绘制三维物体的步骤:启动深度测试;绘制不透明物体;设置深度缓存为只读式,
并启动融合;绘制透明物体;恢复深度缓存的可读写属性.
- OpenGL融合
- OpenGL 融合和透明
- OpenGL系统设计-融合DirectXAudio
- OpenGL下的alpha融合
- OpenGL: OpenGL下的alpha融合
- OpenGL系统设计-和DirectX融合
- OpenGL系统设计-融合DirectXAudio(2)
- OpenGL: Alpha融合和图片透明度-AlphaBlend
- OpenGL: Alpha融合和图片透明度[AlphaBlend]
- 融合
- 融合
- 融合
- 融合
- OPENGL的特殊效果,融合,雾化,反走样(转)
- 利用VC+OpenGL实现融合,雾化,反走样
- opengl用MarchingCube就去做的两球融合动画
- opengl学习笔记(双缓冲与融合技术)
- camera与opengl es的融合显示(AR基础)
- struts学习---配置struts
- 爱情,工作,音乐,测验
- nginx1.2.4安装
- GT Grid HTM5 博客参考
- 使用_CRTDBG_LEAK_CHECK_DF检查VC程序的内存泄漏
- OpenGL融合
- Love ya 三三小说 炫舞爱情 ⑦
- 本来这不是简简略单的恋情。
- Java中GC的工作原理
- 单个触发器判断Insert/Delete/Update操
- ★【世龙最爱之作】☆【丑丫头变身美女校花,不恋情的人懊恼,可是有了爱情之后更烦恼】第七十九章★
- HTML5_Canvas_属性、定义及方法(学习笔记)
- android之uses-permission权限大全
- Android文本样式——下