【发布时间】:2014-06-03 13:50:42
【问题描述】:
在我的 Opengl 应用程序 (lwjgl) 中,我启用了 alpha 混合,如下所示:
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
绘制两个渐变圆时的结果是这样的:
这怎么可能? (黑色的重叠其实是透明的……)
【问题讨论】:
-
你先画了两个圆圈中的哪个?混合时,您需要将几何体重新渲染到前面。
-
我该怎么做? “在另一个之上”的那个是第一个渲染的。
-
您需要按对象的深度对对象进行排序,然后将它们拉回前面。我在这个答案中写了一个关于渲染透明度的各种方法的冗长概述:stackoverflow.com/questions/23280692/…。
-
渐变圆是否使用纹理?
-
没有。我在片段着色器中计算它们,如下所示: color = vec4(red, green, blue, (1.0 - distanceTo00 / 1.0))
标签: java opengl transparency lwjgl alphablending