opengl中的顺序无关透明

opengl中的顺序无关透明,opengl,opengl-es-2.0,transparency,Opengl,Opengl Es 2.0,Transparency,我有一个包含不透明和透明对象的场景。我将它们分为两组,不透明和透明,并从前到后和从后到前对不透明和透明进行排序。我打开深度缓冲区写入和深度测试,从前到后绘制不透明项。然后我关闭深度写入,保持深度测试打开,并从后向前绘制透明项 这一切都很好,但据我所知,我可以画没有任何特定顺序的透明项目。我浏览过像这样的文章,发现通过改变混合函数可以实现与顺序无关的透明度。。。但我真的无法理解这一点 我尝试使用那些在那里建议的混合公式,但是对于重叠的透明项目,我得到了错误的组合颜色,除非我使用通常的颜色(GL_S

我有一个包含不透明和透明对象的场景。我将它们分为两组,不透明和透明,并从前到后和从后到前对不透明和透明进行排序。我打开深度缓冲区写入和深度测试,从前到后绘制不透明项。然后我关闭深度写入,保持深度测试打开,并从后向前绘制透明项

这一切都很好,但据我所知,我可以画没有任何特定顺序的透明项目。我浏览过像这样的文章,发现通过改变混合函数可以实现与顺序无关的透明度。。。但我真的无法理解这一点

我尝试使用那些在那里建议的混合公式,但是对于重叠的透明项目,我得到了错误的组合颜色,除非我使用通常的颜色(GL_SRC_ALPHA,GL_ONE_减去_SRC_ALPHA)。 这真的像看上去那么简单吗?我是不是错过了一些简单的东西?

“通过更改混合函数可以实现与订单无关的透明度……但我真的无法理解这一点。”

我想这就是你的误解所在

通过改变混合函数并不能实现与顺序无关的透明度。只是有些混合函数本质上是顺序无关的


两种常见的顺序无关的混合函数是加法(GL_-ONE,GL_-ONE)和乘法(GL_-DST_-COLOR,GL_-ZERO)。但是,如果这些混合函数不适合您的情况(通常不是),那么您将不得不进行排序,或者使用相对昂贵且复杂的顺序无关透明解决方案,如您链接的文章中提到的A缓冲区。

桌面OpenGL或OpenGL ES是否有可能重复此功能,你读过文件中关于“什么时候订单重要”的部分吗?