OpenGL texture黑边问题

在使用OpenGL的粒子系统创建动态滤镜时遇到纹理边缘出现黑边的问题。经排查,问题出在混合模式上,原本使用的是传统的alpha通道混合模式,导致透明度处理不当。通过切换到alpha预乘的混合模式解决了黑边问题。了解这两种混合模式的数学表达式和工作原理对于正确渲染至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用OpenGL的粒子系统制作一个动态滤镜时发现纹理被绘制成下面这样的效果:

 而我的原图是可以看到花瓣的周围都黑了一圈


最后发现是混合模式的问题,之前采用的混合模式是

GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);    

在改成下面的混合模式后,问题解决:

GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA);

这里介绍一下这两种混合模式:

前一种是传统的alpha通道混合,这

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值