在opengl中绘制透明度2

时间:2012-09-26 12:01:01

标签: opengl-es opengl-es-2.0

我正在研究一个简单的绘图应用程序。我的线是使用多边形构建的,到目前为止看起来很好。我想添加透明度功能,因此我使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);。但是,因为我的多边形有时会重叠,所以我得到了图片中显示的丑陋结果(多层透明度)。我想得到的是左边的数字(没有重叠,因为没有透明度),具有整体透明度。

我想我可以通过保持多边形不重叠来做到这一点,但我认为这对于这项任务来说太过分了。应该有一种方法可以在绘图时控制它们,但作为OpenGL的初学者并没有帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

对不起,但透明度的工作方式不允许你做你想做的事情而不用手动保持多边形不重叠。透明度的工作方式是它采用其下方曲面的颜色,并使用您指定的混合函数来计算像素的最终颜色。

在你的程序中,你正在绘制多个alpha多边形的多边形。这意味着他们的颜色加起来,给出你看到的结果。

我从来没有真正写过绘图应用程序,但你也许可以看看三角形条带来绘制你的线条。它们允许您逐点扩展线条,并确保几何体不会与自身重叠。