在WebGL中使用叠加混合时出错

时间:2016-11-15 13:52:54

标签: opengl-es 3d webgl alphablending

我正在使用JavaScript和webgl开发游戏引擎并使用正向渲染技术,为场景中的每个光源提供一次传递。

我使用添加剂混合进行第二次传递,除非我需要使用透明纹理点亮对象,否则它的效果非常好。在这种情况下,我得到了你可以在下面的图片中看到的令人讨厌的神器。请记住,场景中的对象按z(从远到近)排序,透明对象在不透明对象之后渲染。我使用了混合功能gl.ONE - gl.ONE但是,老实说,我几乎尝试了几乎所有可能有意义的组合。

任何人都可以给我一些如何解决这个问题的提示?

Blending artifact

1 个答案:

答案 0 :(得分:0)

我正在调试我认为类似的问题。我发现底层页面显示的是alpha小于1的像素。即使禁用混合,或者设置了任何混合模式,我似乎也会得到这个。调试此方法的一种方法是更改​​页面上的背景颜色,看它是否会更改结果。

如果您为' alpha'指定true,请检查您何时创建WebGL上下文。如果是这样,请尝试更改为false。这意味着浏览器会将您的画布视为完全不透明。