OpenGL применить альфа-маску после изменения масштаба - PullRequest
0 голосов
/ 06 сентября 2011

Мне нужно объединить два изображения в openGL, используя альфа-маску.

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

Я думал, что в opengl 2.0 есть способ создать целевой альфа-буфер, но я не могу вспомнить его имя.

1 Ответ

1 голос
/ 07 сентября 2011

Вы не сказали, откуда именно эта альфа-маска или как вы ее генерируетеЭто может быть статическая альфа-маска из текстуры или что-то, что вы строите в кадровом буфере.

Если это происходит из текстуры, вы можете легко сделать это с помощью шейдеров или даже просто из мультитекстурирования текстурной среды.Вы устанавливаете изображение как «перемасштабированное» как одну текстуру, а альфа-маску как другую (как текстуру GL_INTENSITY или GL_RED, если вы используете ядро ​​GL 3.1+).Возьмите RGB из основной текстуры, но выходной альфа должен исходить из текстуры маски.Затем альфа-смешивание / тестирование / и т. Д. Как обычно.

Если альфа-то что-то, что вы встроили в кадровый буфер, то это просто вопрос использования правильных параметров смешивания .Есть GL_SRC_* параметры наложения, но есть также GL_DST_* параметры наложения.Вы ищете что-то на основе GL_DST_ALPHA и GL_ONE_MINUS_DST_ALPHA

...