【发布时间】:2014-09-11 13:37:26
【问题描述】:
我正在尝试将 alhpa 掩码与 glAlphaBlend 和他的所有参数一起使用。我在 stackoverflow 上找到了很多类似的答案,但我什么都没意识到。
我有三个图像,一个背景 (1)、一个蒙版 (2) 和文本 (3)。
我想要的是绘制背景,将我的蒙版减去文本以最终获得图像(A)。
Draw background
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glClear(GL_DEPTH_BUFFER_BIT);
glEnable(GL_BLEND);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
glBegin(GL_QUADS);
glColor4ub(0,0,0,255);
glVertex2d(mxIncrust0 - bgwidth, myIncrust0);
glVertex2d(mxIncrust0, myIncrust0);
glVertex2d(mxIncrust0, myIncrust0 + textheight);
glVertex2d(mxIncrust0 - bgwidth, myIncrust0 + textheight);
glEnd();
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glEnable(GL_BLEND);
glBlendEquation(GL_FUNC_ADD);
glBlendFuncSeparate(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA, GL_ZERO, GL_ONE);
Draw Text
但一切正常!
实现它的真正方法是什么?
我的问题不同,因为它不是基于 OpenGL ES,而是仅基于 Open GL。
【问题讨论】:
-
But Anything is working !这到底意味着什么?你有什么结果? SO 上没有媒介。 -
我明白,我想说我尝试了堆栈上的每个答案,但一切都在做正确的事情!
-
然后告诉我们你有什么。另请注意,没有“画面具”之类的东西。唯一吸引人的是
Draw*调用。你不需要画面具。掩码将在输出合并阶段与您的文本纹理相结合(GL 俚语中的“每个样本操作”)。在您向我们展示绘图代码和生成的屏幕截图之前,我只能建议您看一下 opengl 文档:Rendering Pipeline Overview -
如果我不粘贴这段代码,那只是因为它没有帮助。
-
你想要的输出可以很容易地在着色器中完成。您将首先渲染背景。然后启用混合并附加蒙版纹理和文本纹理,并将文本纹理的 alpha 乘以蒙版值。
标签: opengl mask alpha freetype