混合(Blending)

文章介绍了如何在计算机图形学中实现物体的透明效果。通过调整alpha值控制透明度,使用GL_BLEND启用混合,并通过GL_CLAMP_TO_EDGE避免纹理边缘的有色边框。在绘制场景时,应先画不透明物体并按距离排序,以确保正确渲染透明部分。
摘要由CSDN通过智能技术生成

混合是实现物体透明度的技术。

alpha = 1.0,完全不透明;alpha = 0.0,完全透明。

有些图片透明的部分是完全透明的,完全透明的部分可以直接丢弃。

if(texColor.a < 0.1)

        discard;

透明纹理的加载:当环绕方式设置为GL_REPEAT时,opengl会对边缘的值和纹理下一个重复的值进行插值。使用透明纹理时,图像顶部会与底部颜色插值,若底部不是透明的,则会出现一个半透明的有色边框环绕纹理。要想避免这个,每当你alpha纹理的时候,请将纹理的环绕方式设置为GL_CLAMP_TO_EDGE。

混合:

glEnable(GL_BLEND);

C¯result=C¯source∗Fsource+C¯destination∗Fdestination

  • C¯source:源颜色向量。这是源自透明纹理的颜色向量。
  • C¯destination:目标颜色向量。这是当前储存在颜色缓冲中的颜色向量。
  • Fsource:源因子值。指定了alpha值对源颜色的影响。
  • Fdestination:目标因子值。指定了alpha值对目标颜色的影响。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);        //设置因子值

绘制一个包含透明和不透明的物体的场景时:

1.先绘制所有不透明得分物体;

2.对所有不透明的物体排序;

3.按由远及近的顺序绘制不透明物体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值