为什么多边形平滑会产生折线?

时间:2018-11-05 13:10:09

标签: opengl polygon smoothing

在OpenGL中使用多边形平滑时,在多边形内部出现了一些虚线,如在图像中可以看到的那样:

enter image description here enter image description here

我的代码如下:

glEnable(GL_POLYGON_SMOOTH)
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST)

glPolygonMode(GL_FRONT, GL_FILL)
glPolygonMode(GL_BACK, GL_LINE)
glLineWidth(5)
glBegin(GL_QUADS)
glVertex3f(0.1, 0.1, 0)
glVertex3f(0.2, 0.1, 0)
glVertex3f(0.2, 0.2, 0)
glVertex3f(0.1, 0.2, 0)

glEnd()
glDisable(GL_POLYGON_SMOOTH)

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:2)

通常在现代硬件上通过绘制几个三角形来模拟绘制四边形或多边形。在平滑这些三角形的边界时,将四边形分割为两个三角形的对角线也将变得平滑,从而产生此伪像。

您正在使用的OpenGL API(固定功能管道)已弃用十年,现在不再使用。尤其是“平滑多边形”或“绘制多边形”之类的“特殊功能”在不同硬件上的行为可能会大不相同。

现代OpenGL(3.3+核心配置文件)的工作原理完全不同,并提供了一组更好的方法来处理抗锯齿,例如MSAA或后期处理(FXAA,...)