4

ない

sb.setBlendFunction(GL10.GL_ONE_MINUS_DST_COLOR, GL10.GL_ZERO);
sb.begin();
font.setColor(1, 1, 1, 1);
for (LineRect s: vertices){
     font.draw(sb,""+ s.x+","+.y, s.x, s.y);
}
sb.end();
sb.setBlendFunction(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

または

Gdx.gl10.glEnable(GL10.GL_COLOR_LOGIC_OP);
Gdx.gl10.glLogicOp(GL10.GL_XOR);

    sb.begin();
    font.setColor(1, 1, 1, 1);
    for (LineRect s: vertices){
         font.draw(sb,""+ s.x+","+.y, s.x, s.y);
    }
    sb.end();


Gdx.gl10.glDisable(GL10.GL_COLOR_LOGIC_OP);

私のために働いた、私は何が間違っているのですか?どうすれば修正できますか?

アイデアは、背景が 50% グレーでない限り、部分的に透明なテクスチャを持つクワッドで構成されるフォントを常に表示されるように描画することです。背景の黒 = フォントは白でレンダリングされます。

4

1 に答える 1

1

背景色の明るさをテストする必要があります。これは私がAWTカラー用に作成したメソッドで、libgdx Colorクラスに適応するのは本当に簡単です:

/**
 * Returns the brightness of the color, between 0 and 255.
 */
public static int getBrightness(Color c) {
    if (c == null) return -1;
    return (int) Math.sqrt(
        c.getRed() * c.getRed() * .241 +
        c.getGreen() * c.getGreen() * .691 +
        c.getBlue() * c.getBlue() * .068);
}

明るさが 128 未満の場合は明るい前景を使用し、それ以外の場合は暗い前景を使用します。

于 2012-02-28T15:55:29.727 に答える