重新缩放后,opengl应用alpha蒙版

时间:2011-09-06 18:03:01

标签: opengl graphics alphablending

我需要使用alpha蒙版在openGL中合并两个图像。

但是 - 我需要在将图像重新缩放到显示尺寸后应用alpha蒙版 - 即。 alpha蒙版在屏幕上而不是图像坐标。

我认为在opengl 2.0中有一种方法可以使用目标alpha缓冲区,但我记不起它的名字了。

1 个答案:

答案 0 :(得分:1)

你还没有说过这个alpha蒙版来自哪里或者你是如何生成它的。它可以是纹理中的静态alpha蒙版,也可以是你在帧缓冲区中构建的东西。

如果它来自纹理,您可以使用着色器轻松完成此操作,甚至只需纹理环境多纹理。您将图像设置为“重新缩放”为一个纹理,将alpha蒙版设置为另一个(如GL_INTENSITY纹理,或GL_RED,如果您使用的是核心GL 3.1+)。从主纹理中获取RGB,但输出alpha应来自您的蒙版纹理。然后alpha混合/测试/等正常。

如果alpha是你在framebuffer中内置的东西,那么只需要使用correct blend parameters。有GL_SRC_*个混合参数,但也有GL_DST_*个混合参数。您正在寻找基于GL_DST_ALPHAGL_ONE_MINUS_DST_ALPHA

的内容