web-dev-qa-db-ja.com

Libgdxビットマップフォントサイズの設定方法

ビットマップフォントを使用してゲームのfpsを画面にレンダリングしていますが、サイズの方法はありません。カメラのビューポートのサイズが非常に小さいため、レンダリングされるテキストが巨大でピクセル化されるため、これは私にとって問題です。

font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);
15
Storm Asdg

フォントのサイズを変更するために使用するsetScale()メソッドを試しましたか

myFont.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
myFont.setScale(scale);

問題がある場合は、コメントを残してください

幸運を !!

編集:

最新のlibgdxバージョンでは、次のようにフォントを拡大してみてください。

myFont.getData().setScale();
37
Netero

setScaleは使用する関数です。最新のLibGDXバージョン(これは以前に変更されましたが)では、これを行う必要があることに注意してください。

font.getData().setScale(2, 2);

それがするのに十分になる前に:

font.setScale(2, 2);

SetScaleの最初の数値はXスケールであり、2番目はYスケールです。

2
Zoe

私はしばしばminos23が提案したものを使用します。ただし、特に上方向に拡大する場合は、ピクセル化されて見える可能性があります。派手な大きなビットマップフォントは多くのスペースを占有する可能性があり、多くの異なるフォントが必要な場合は予算を使い果たす可能性があります。

Gdx.Freetype を使用すると、実行時に小さな.ttfファイルからビットマップフォントを作成できます。つまり、アプリに.ttfファイルを同梱するだけで、解像度などのユーザー設定に基づいてフォントを生成できます。

その他のスケーリングとfreetypeソリューションは、異なるフォントサイズの複数のビットマップを持っています。このようにして、フォントは常に鮮明に保たれますが、保存コストがかかります。

1
Madmenyo

Neteroの答えは機能します。コードをきれいにしたい場合、ヘルパー関数を書くことができます:

public static void setLineHeight(BitmapFont font, float height) {
    font.getData().setScale(height * font.getScaleY() / font.getLineHeight());
}
0
Deepscorn

フォントサイズを小さくするためにsetScale()関数を他の関数としても使用していますが、ここでは別のソリューションを提供したいので質問があります。 FPSRendererインスタンスを使用しない理由、または投影マトリックスがスクリーンサイズを持つ別のバッチにfpsラベルを描画しない理由

0