Подтвердить что ты не робот

Как установить размер шрифта bitmap Libgdx?

Я показываю на экране fps игры с использованием растрового шрифта, но нет методов для размера. Это проблема для меня, потому что размер моего видового экрана очень мал, поэтому текст при визуализации огромен и пикселирован.

font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);
4b9b3361

Ответ 1

Попробовал ли метод setScale() использовать то, что я использую для изменения размера шрифта

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

если у вас есть проблемы, оставьте комментарий

Удачи!!

Изменить:

С последней версией libgdx попробуйте масштабировать шрифт следующим образом:

myFont.getData().setScale();

Ответ 2

Я часто использую то, что предложил minos23. Но падение состоит в том, что он может выглядеть неровно, особенно при масштабировании вверх. Необычный большой шрифт растрового изображения может занимать много места, и если вам нужно много разных шрифтов, вы можете перечислить свой бюджет.

Используя Gdx.Freetype, вы можете создавать битмапфоны во время выполнения из небольших файлов .ttf. Это означает, что вам нужно отправлять файлы .ttf с вашим приложением и создавать шрифт на основе пользовательских настроек, таких как разрешение.

Другое, тогда масштабирование и решение freetype имеют несколько растровых изображений разных размеров шрифта. Таким образом, ваши шрифты остаются хрустящими все время, но ценой хранения.

Ответ 3

Я использую функцию setScale(), а также другие, чтобы уменьшить размер шрифта, но здесь я хочу предложить другое решение, и у меня есть вопрос. Почему вы не используете экземпляр FPSRenderer или почему вы не нарисовываете метку fps на другой партии, в которой матрица проекции имеет размер экрана?

Ответ 4

setScale - это функция для использования. Обратите внимание, что с новейшей версией LibGDX (ранее это было изменено) вам нужно сделать это isntead:

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

прежде чем этого было достаточно:

font.setScale(2, 2);

Первое число в setScale - это шкала X, а вторая - шкала Y.

Ответ 5

Нетеро ответ работает. Если вы хотите сделать код чище, вы можете написать вспомогательную функцию:

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