OpenGL — прозрачность рендеринга под аддитивным слоем

#c #opengl

#c #opengl

Вопрос:

Существует ли уравнение смешивания, которое можно создать с использованием OpenGL glBlendFunc, которое позволило бы отображать прозрачный цвет (RGBA) за аддитивным наложением.

Рендеринг поверх:

Наложение прозрачного квадрата на аддитивный слой.

Этот эффект может быть достигнут с помощью glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Рендеринг под:

Прозрачный квадрат под аддитивным слоем.

Есть ли уравнение для этого эффекта наложения?

Комментарии:

1. Обычным подходом было бы изменить порядок рисования (т. Е. Сначала отсортировать объекты по глубине). По какой-либо причине вы не можете этого сделать?

Ответ №1:

Нет параметров glBlendFunc для непосредственного рисования наложения. Информацию можно найти здесь:

http://benmcdowell.com/implementing-photoshop-blend-modes-in-opengl/

Однако ваш эффект, похоже, не является наложением, похоже, либо на экран

 glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
  

или аддитивный

 glBlendFunc(GL_SRC_ALPHA, GL_ONE);
  

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

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