opengl - OpenGL:渲染两个相交的透明平面:不可能吗?

标签 opengl transparency

我很难解决这个问题,似乎无法渲染。

如何解决这个问题?我希望OpenGL像在下面这张图片的右侧一样呈现它:

最佳答案

您需要在禁用深度测试并使用顺序无关的混合公式的同时渲染平面。

如果背面有一些不透明的几何图形,请绘制这些几何图形,将深度缓冲区设置为只读而不是禁用深度测试,然后渲染透明的几何图形。

还有一些高级技术可以解决该常见问题,例如深度剥离。

编辑

您可以使用glDepthMask(GL_FALSE)将深度缓冲区设置为只读。

这是一篇很好的文章,解释了为什么无法实现完美的透明度:Transparency Sorting。还可以看一下Order Independent Transparency with Dual Depth Peeling文章,该文章涵盖了用于具有精确(或近似)顺序独立透明性的两种方法(一种非常简单,单遍)。

我忘了提及Alpha to Coverage

关于opengl - OpenGL:渲染两个相交的透明平面:不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127242/

相关文章:

ios - 有没有办法让谷歌地图完全透明?

video - 透明.mov视频转换成具有透明背景ffmpeg的png序列

opengl - 延迟渲染与基于图 block 的剔除概念问题

opengl - 打开总帐 : draw rectangles with borders?

c - Opengl使 "AI"桨上下移动

html - 如何使输入元素完全透明?

iOS 以透明方式合成 2 个视频

opengl - 调试 OpenGL 的最佳方法是什么?

c++ - 渲染器效率

transparency - 浏览器支持 PNG 透明度