Почему сглаживание полигонов приводит к ломаной линии? - PullRequest
0 голосов
/ 05 ноября 2018

При использовании сглаживания многоугольников в 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 голосов
/ 05 ноября 2018

Рисование четырехугольников или полигонов обычно эмулируется на современном оборудовании путем рисования нескольких треугольников. При сглаживании границ этих треугольников диагональ, которая разделяет четырехугольник на два треугольника, также сглаживается, создавая эти артефакты.

API OpenGL, который вы используете (конвейер с фиксированными функциями), устарел уже десять лет и больше не должен использоваться. Особенно «специальные функции», такие как сглаживание многоугольника или рисование многоугольников, могут работать по-разному на разных аппаратных средствах.

Современный OpenGL (3.3+ Core Profile) работает совершенно по-другому и поставляется с набором лучших методов для борьбы с сглаживанием, таких как MSAA или постобработка ( FXAA , ...)

...