我需要使用alpha蒙版在openGL中合并两个图像。
但是 - 我需要在将图像重新缩放到显示尺寸后应用alpha蒙版 - 即。 alpha蒙版在屏幕上而不是图像坐标。
我认为在opengl 2.0中有一种方法可以使用目标alpha缓冲区,但我记不起它的名字了。
答案 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_ALPHA
和GL_ONE_MINUS_DST_ALPHA