web-dev-qa-db-fra.com

Comment définir la taille de la police bitmap Libgdx?

Je rend le fps du jeu à l'écran en utilisant la police bitmap, mais il n'y a pas de méthode pour la taille. C'est un problème pour moi car la taille de la fenêtre de ma caméra est très petite, donc le texte rendu est énorme et pixelisé.

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

Avez-vous essayé la méthode setScale () que ce que j'utilise pour redimensionner ma police

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

si vous avez des problèmes, laissez un commentaire

Bonne chance !!

Modifier :

Avec la dernière version de libgdx, essayez d’adapter la police de la manière suivante:

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

J'utilise souvent ce que minos23 a suggéré. Mais l’inconvénient est qu’elle peut sembler pixelisée, en particulier lorsqu’elle augmente. Une grande police bitmap de grande taille peut prendre beaucoup de place et si vous avez besoin de nombreuses polices différentes, vous pourrez dépasser votre budget.

En utilisant Gdx.Freetype vous pouvez créer des bitmapfonts au moment de l’exécution à partir de petits fichiers .ttf. Cela signifie que vous devez uniquement expédier les fichiers .ttf avec votre application et que vous pouvez générer une police en fonction de paramètres utilisateur tels que la résolution.

La solution freetype comporte également plusieurs bitmaps de tailles de polices différentes. De cette façon, vos polices restent nettes tout le temps, mais au détriment du stockage.

2
Madmenyo

setScale est la fonction à utiliser. Veuillez noter qu'avec la version la plus récente de LibGDX (ceci a toutefois changé plus tôt), vous devez faire ceci:

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

avant il suffisait de faire:

font.setScale(2, 2);

Le premier nombre dans setScale est l'échelle X et le second est l'échelle Y.

0
Zoe

La réponse de Netero fonctionne ... Si vous voulez rendre le code plus propre, vous pouvez écrire une fonction d'assistance:

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

J'utilise la fonction setScale () aussi que d'autres pour réduire la taille de la police, mais je souhaite ici proposer une autre solution et j'ai une question. Pourquoi n'utilisez-vous pas l'instance de FPSRenderer ou pourquoi ne dessinez-vous pas votre étiquette en fps sur un autre lot dont la matrice de projection a la taille de l'écran?

0
Khachatur Badalyan