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