Альфа-каналы для каждого компонента с OpenGL? - PullRequest
4 голосов
/ 12 мая 2010

Возможно ли выполнить смешивание с одним альфа-каналом на компонент (один для красного, один для зеленого и один для синего) с OpenGL? Если нет, то каковы возможные обходные пути?

Ответы [ 4 ]

2 голосов
/ 12 мая 2010

Это не то, что напрямую поддерживается. Это довольно легко сделать самостоятельно:

  • Визуализируйте свой треугольник (или любой другой), используя 3-канальную текстуру "альфа" и glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR)
  • Включить мультитекстуру и установить «альфа» текстуру для модуляции вашей текстуры RGB
  • Визуализируйте свой треугольник с помощью glBlendFunc(GL_ONE, GL_ONE)
1 голос
/ 12 мая 2010

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

Какого эффекта / результата вы пытаетесь достичь?

0 голосов
/ 04 декабря 2018

Вы, вероятно, ищете: GL_ARB_blend_func_extended

0 голосов
/ 12 мая 2010

То, что вы описываете, невозможно с OpenGL.

Тем не менее, учитывая, что вы новичок в OpenGL, может, то, что вы описываете, не совсем то, что вы ищете?

Смешивание - это шаг, который происходит после того, как вы решили, какой цвет должен иметь ваш текущий фрагмент (обычно исходящий из треугольника). Этот цвет должен быть объединен с предыдущим цветом в буфере кадра. Вы уверены, что это то, что вы ищете?

...