0

我想使用 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),但没有帮助。

4

1 回答 1

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;
    }
}
于 2016-06-15T14:44:20.443 回答