FTGL纹理字体以GL_XOR模式显示框

时间:2016-06-13 18:10:58

标签: opengl ftgl

我想使用FTGL纹理字体(FTTextureFont)在XOR模式下渲染字体。问题是所有字符都呈现为框(人的颜色与背景颜色差异)。 渲染字体的调用包围在:

glPushAttrib(GL_ALL_ATTRIB_BITS);
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_XOR);

glDisable(GL_COLOR_LOGIC_OP);
glPopAttrib();

我尝试禁用深度位glDisable(GL_DEPTH_TEST),但它没有帮助。

1 个答案:

答案 0 :(得分:0)

我在这个答案中找到了一个解决方案:https://stackoverflow.com/a/29313195/4174026

问题是由字形纹理中的透明像素引起的,这些像素未被排除。

在OpenGL ES版本1.0和1.1中,alpha测试函数(GL_ALPHA_TEST)可用于丢弃透明片段:

glAlphaFunc(GL_GREATER, 0.2f); // Reject fragments with alpha < 0.2
glEnable(GL_ALPHA_TEST);

在较新版本的OpenGL ES中,可以使用自定义像素着色器:

void main() {
    gl_FragColor = v_color * texture2D(u_texture, v_texCoords);

    if (gl_FragColor.a <= 0.2) {
        discard;
    }
}