Рендеринг частиц как GL_TRIANGLE_FAN с прозрачностью в OpenGL - PullRequest
0 голосов
/ 17 декабря 2010

Я хочу визуализировать частицы с шестиугольниками, которые исчезают наружу. Я использовал TRIANGLE_FAN для каждой частицы. Однако прозрачность выглядит не очень хорошо.

glBegin(GL_TRIANGLE_FAN);
    glColor4f(c.x, c.y, c.z, particle.temperature / 100.0);
    glVertex3f(0, 0, 0);
    glColor4f(0, 0, 0, 0);
    glVertex3f(0.866025404 * H / 2, 0.5 * H / 2, 0);
    glVertex3f(0, 1 * H / 2, 0);
    // other vertices omitted
glEnd();

Я получаю вывод, который мерцает и где черные прозрачные части нарисованы поверх непрозрачных объектов в некоторых кадрах Как мне изменить мою процедуру рендеринга, чтобы избежать этих ошибок?

output

1 Ответ

3 голосов
/ 18 декабря 2010

То, что вы наблюдаете, это частицы позади других, которые не вытягиваются, потому что в Z-буфере присутствует более близкое значение Z.

  1. Вы можете вернуть свои частицы обратноfront.

  2. Вы также можете отключить проверку глубины, но стандартное альфа-смешение не будет правильным.в режиме ALPHA / ONE вы сможете накапливать все частицы, поэтому порядок также не будет иметь значения.

...