POLYGON_SMOOTH в OpenGL делает странные вещи

#opengl #smooth

#opengl #сглаживание

Вопрос:

Я пытаюсь получить некоторое сглаживание в моем воксельном движке, но когда я включаю GL_POLYGON_SMOOTH состояние, я получаю эти странные волны на границе полигонов

Без:

  

С:

  

У вас есть идея, откуда это может быть?

Ответ №1:

Это нормально.

Для правильной работы сглаживания полигонов вам нужно 3 вещи:

  1. При использовании рисуйте воксели задом наперед GL_POLYGON_SMOOTH .
  2. Буфер кадров, который хранит альфа-адрес назначения (например, RGBA, а не RGB)
  3. Функция наложения должна быть GL_SRC_ALPHA_SATURATE, GL_ONE

Если вы учтете все три из этих вещей, черно-белые артефакты субпикселей исчезнут.

Поскольку рисование вокселов в определенном порядке довольно утомительно и GL_POLYGON_SMOOTH устарело, большинство людей просто используют сглаживание с несколькими выборками вместо этого. На самом деле я бы посоветовал вам также пойти по этому пути.