OpenGL: объединение glBlendFunc с glAccum - PullRequest
0 голосов
/ 10 июня 2009

Я работал над графическим проектом, создавая Depth of Field. Метод выполняет несколько проходов, каждый из которых визуализирует сцену с различными ближними и дальними параметрами отсечения, так что он отображает разные диапазоны глубины на каждом проходе.

Идея состоит в том, чтобы применить ядро ​​размытия на каждом отдельном слое путем рендеринга в текстуру и создания размытия на визуализированном квадре (с текстурой). Это все довольно простые вещи. Как работает нормально. Однако часть, которую я не могу получить, - это объединение слоев:

Цветовой буфер очищается с color4 (0,0,0,0) перед каждым проходом. Однако накопление, по-видимому, не позволяет использовать glBlendFunc таким образом, чтобы он накапливался с учетом альфа-канала (т.е. glBlendFunc (GL_SRC_ALPHA, GL_SRC_ONE_MINUS_ALPHA)).

Тогда возникает вопрос: - Влияет ли glBlendFunc на glAccum? - Если нет, как я могу обойти это?

Судя по документации, это не соответствует действительности, так как не упоминается, однако кажется, что это очень полезная функция.

С уважением, R

1 Ответ

0 голосов
/ 29 января 2010

Ваш вопрос не объясняет, почему вам нужно смешивать и накапливать, поэтому этот ответ может быть не очень полезным. Накопленный буфер не смешивается. Но есть два пути, которые могут быть полезны:

  1. Большинство современных аппаратных средств могут выполнять "раздельное" смешивание, поэтому вы можете, например, выполнить аддитивную операцию с альфа-каналом, одновременно выполняя реальное смешивание с кадровым буфером.

  2. Многие современные настройки позволят вам визуализировать несколько буферов рисования одновременно, иногда с отдельными режимами наложения.

Таким образом, вы можете использовать второй кадровый буфер через FBO как своего рода «буфер ложного накопления», используя режим наложения для «накопления». Если вы можете найти режим смешивания, который достаточно близок к желаемой операции накопления, вы можете воспользоваться уравнением смешивания.

Взгляните на следующие расширения GL:

http://www.opengl.org/registry/specs/ARB/draw_buffers.txt

http://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt

http://www.opengl.org/registry/specs/EXT/draw_buffers2.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...