0

FTGL テクスチャ フォント (FTTextureFont) を使用して XOR モードでフォントをレンダリングしたいと考えています。問題は、すべての文字がボックスとしてレンダリングされることです (誰の色が背景と 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 では、アルファ テスト関数 ( 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 に答える