OpenGL场景顶部的反色文本

时间:2010-10-07 19:37:49

标签: opengl text fonts colors invert

我有一个字体纹理,我用它来在我的OpenGL场景上绘制文字。 问题是场景的颜色变化太大,以至于我使用的任何纯色都难以阅读。是否可以用反色绘制我的字体纹理?

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);的调用只会用纯色绘制它,调用glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);会将其反转,但会忽略纹理的alpha值,所以你只能看到倒置矩形而不是字母。

我需要的是相当于的东西 glBlendFunc(GL_SRC_ALPHA * GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA);

这可以通过某种方式实现而不使用着色器

2 个答案:

答案 0 :(得分:3)

问题解决了。

根据戴夫对我原帖的评论: 我没有使用GL_ALPHA纹理,而是生成每个像素相等的GL_RGBA纹理: (alpha,alpha,alpha,0xff)(这是灰度图像而不是亮度图像)。 然后我用这个纹理:

glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_COLOR);

结果是:(1 - dest_color)x“src_alpha”+ dest_color x(1 - “src_alpha”) 这正是我所需要的。

谢谢! 罗恩

答案 1 :(得分:0)

复制要覆盖的屏幕的子部分,可以使用CPU反转此复制的部分。使用文本作为蒙版,将新制作的反转纹理绘制到屏幕上。

请注意,这很慢,毫无疑问着色器会更快。