2011-12-28 8 views
4

どちらLibgdx Bitmapfontをレンダリングしてピクセルの色がバックグラウンドの逆数になるようにする方法は?

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%の灰色でない限り、部分的に透明なテクスチャを持つ四角形からなるフォントを、常に見えるように描画することです。 背景黒色=フォントは白をレンダリングします。

答えて

1

背景色の明るさをテストする必要があります。ここで私はAWTの色のために作られた方法は、Colorクラスをlibgdxに適応するために、本当に簡単にする必要があります:明るさが< 128ある

/** 
* 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); 
} 

場合は、他に、光の前景を使用暗いフォアグラウンドを使用しています。

関連する問題