问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合

发布网友 发布时间:2022-11-20 17:46

我来回答

1个回答

热心网友 时间:2023-10-14 01:55

Blend是OpenGL中的一个非常重要的部分,它可以让每个输出的源和目的颜色以多种方式组合在一起,以呈现出不同的效果,满足不同的需求。

在OpenGLES1.0中,Blend在OpenGLES固定的管线中,OpenGLES2.0相对1.0来说,更为灵活。在OpenGLES2.0中,与Blend相关的函数及功能主要有:

Blend的使用比较简单,但是如果不理解Blend的这些函数及参数的意义,使用了错误的参数,就难以获得我们所期望的混合结果了。
想要使用Blend, glEnable(GL_BLEND) 当然是必须的。与之对应的,不需要Blend的时候,我们需要调用 glDisable(GL_BLEND) 来关闭混合。
另外的四个方法,看名字差不多就能知道他们的意义了。
glBlendFunc 和 glBlendFuncSeparate 都是设置混合因子,反正就是这么个意思了。区别在于glBlendFunc是设置RGBA的混合因子,而glBlendFuncSeparate是分别设置RGB和Alpha的混合因子。设置混合因子是做什么的呢?继续看。
glBlendEquation 和 glBlendEquationSeparate 都是设置Blend的方程式,也就是设置混合的计算方式了,具体参数后面说。他们的区别在同 glBlendFunc 和 glBlendFuncSeparate 的区别一样。
颜色、因子、方程式,组合起来就是:最终颜色=(目标颜色目标因子)@(源颜色源因子),其中@表示一种运算符。
至于glBlendColor则是在glBlendFunc和glBlendFuncSeparate的设置中,因子可以设置和常量相关的,这个常量就是由glBlendColor设置进去的。

glBlendFuncSeparate设置混合因子,参数及它们表示的主要如下,而glBlendFunc的参数也是这些,表示的意义就是RGB和A合并为RGBA就是了。在下表中,s0表示源,d表示目的,c表示有glBlendColor设置进来的常量。

glBlendEquationSeparate的设置混合操作,参数及其意义如下表所示。通过glBlendEquationSeparate或者glBlendEquation设置的方程中,源和目的颜色分别为(Rs,Gs,Bs,As)
和(Rd,Gd,Bd,Ad)。最终混合的颜色结果为(Rr,Gr,Br,Ar)。源和目的的混合因子分别为(sR,sG,sB,sA)和(dR,dG,dB,dA)

。其中,所有的颜色分量的取值范围都为[ 0, 1 ]。GL_MIN和GL_MAX是在OpenGLES3.0才有的
Mode RGB Components Alpha Component
GL_FUNC_ADD RrGrBr=sRRs+dRRd=sGGs+dGGd=sBBs+dBBd
Ar=sAAs+dAAd
GL_FUNC_SUBTRACT RrGrBr=sRRs−dRRd=sGGs−dGGd=sBBs−dBBd
Ar=sAAs−dAAd
GL_FUNC_REVERSE_SUBTRACT RrGrBr=dRRd−sRRs=dGGd−sGGs=dBBd−sBBs
Ar=dAAd−sAAs
GL_MIN RrGrBr=min(Rs,Rd)=min(Gs,Gd)=min(Bs,Bd)
Ar=min(As,Ad)
GL_MAX RrGrBr=max(Rs,Rd)=max(Gs,Gd)=max(Bs,Bd)
Ar=max(As,Ad)

目的纹理和源纹理使用的图片分别如下所示(作为源的图片为了表现混合效果,上中下三部分用了不一样的透明度,最下面部分不透明):

根据公式推敲下渲染的结果:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
【推文】快穿无cp女主文 沈阳门市电费多少钱一度 沈阳 商场一度电多少钱 工业用电多少钱一度沈阳 沈阳商用一度电多少钱 沈阳商业用电电费多少钱一度 沈阳商电多少钱一度 大学专业【软件工程】后面括号中的【嵌入式培养】是什么意 软件工程实训培养目标 高级软件工程师培养目标 盗窃罪判刑是怎么判的 请你找两首描写冬景的古诗,抄写下来。 一首描写冬景的古诗 牛奶蛋白纤维面料好吗 小孩二年级数学理解能力差怎么办 如何自制培养基? 娥佩兰在日本怎样?谁去过日本了解过这个牌子? 移动新闻客户端的新闻动态 抽屉网的新热榜 新风系统可取代空调吗 新风系统可以取代空调吗 蚌埠植发价格贵吗 蚌埠植发效果好吗 蚌埠附属医学院第一医院 蚌埠市哪家理发店做头发比较好?地址是什么? 浅析新产品营销障碍的产生原因及克服策略,我的毕业论文啊~!发邮箱也... 立白质量如何,立白天然洗洁精洗碗可除异味吗 吃辣的流鼻子怎么回事? 安徽网云直播怎么看 开机出现checking media,求还原出厂设置 怎么防止被封 射频除皱大概需要多少钱 高利转贷怎么处理 小米手机和黑鲨手机能一起玩第五人格吗 changeable为什么不去e? 刘诗诗和佟丽娅哪个漂亮? 刘诗诗和佟丽娅谁好看? 杨幂、刘诗诗、佟丽娅、赵丽颖,谁的古装造型更吸引你? 杨幂,刘诗诗,唐嫣,佟丽娅谁最漂亮? 一篇带你掌握高项计算题 关键路径问题 (Vc++) 巧装天花板,怎样提高天花板的保温隔热性? 毛细管石膏板吊顶安装怎样固定以及吊顶内的集管保温处理 新风系统可以当空调用吗?感觉差不多功能? 做梦要买红色的摩托车但是又没买? 康佳led电视屏幕驱动主版故障修理费多钱? 封号斗罗怎么上站? 苹果手机怎么设置屏幕旋转失灵了怎么办 拿油膏他是什么意思 灵修系列——出40:1-33《立起会幕》 空调系统有哪几种