0

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

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

在此处输入图像描述

4

1 回答 1

1

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

在您的程序中,您正在绘制多个带有 alpha 的多边形。这意味着它们的颜色相加,给出你看到的结果。

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

于 2012-09-26T12:39:40.813 回答