【零基础学WebGL】FrameBuffer blend失真问题

WebGL Framebuffer与Blend功能的影响分析
本文探讨了WebGL中使用framebuffer和blend功能对绘制效果的影响。通过示例展示了开启blend后,如何进行多层混合计算,以及framebuffer如何作为额外图层参与混合,导致颜色变化。为避免framebuffer带来的额外混合计算导致内容失真,建议在将framebuffer内容绘制到canvas时关闭blend功能。

本文主旨是探究使用framebuffer特性,对blend功能有何影响。

WebGL Blend

回顾前文,可以通过gl.blend开启WebGL混合功能。

本文再通过绘制一个半透明的蓝色矩形,进一步开启gl.blend之后,浏览器是如何一步步合成最终内容的。

gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);

const vertexData = [-1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0];
setAttribute(program, gl, vertexData, "a_position");
const v_color = gl.getUniformLocation(program, 'v_color');
gl.uniform4f(v_color, 0,0,1,0.5);
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); 

可以发现,最终显示的颜色值是(0,0,31)。整个混合过程,涉及三个图层(自下而上):浏览器页面(黑色)、canvas(黑色)、矩形(具有透明度的蓝色)。

混合过程的顺

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值