22

我正在使用位图字体在屏幕上渲染游戏 fps,但没有用于大小的方法。这对我来说是个问题,因为我的相机视口尺寸非常小,因此渲染时的文本很大且像素化。

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

5 回答 5

45

您是否尝试过我用来调整字体大小的 setScale() 方法

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

如果你有问题,请发表评论

祝你好运 !!

编辑 :

使用最新的 libgdx 版本,尝试像这样缩放字体:

myFont.getData().setScale();
于 2015-11-10T15:33:56.860 回答
7

我经常使用 minos23 的建议。但缺点是它可能看起来像素化,尤其是在向上缩放时。花哨的大位图字体会占用大量空间,如果您需要许多不同的字体,您可能会超出预算。

通过使用Gdx.Freetype,您可以在运行时从小.ttf文件创建位图字体。这意味着您只需要将.ttf文件与您的应用一起发送,并且可以根据用户设置(如分辨率)生成字体。

除了缩放和自由类型解决方案之外,还有多个不同字体大小的位图。这样,您的字体始终保持清晰,但以生成正确字体的运行时性能为代价。

于 2015-11-11T08:41:32.087 回答
3

setScale 是要使用的函数。请注意,使用最新的 LibGDX 版本(虽然之前已更改),您需要这样做:

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

在它足够做之前:

font.setScale(2, 2);

setScale 中的第一个数字是 X 比例,第二个是 Y 比例。

于 2017-07-20T14:14:43.250 回答
0

我也像其他人一样使用 setScale() 函数来减小字体大小,但在这里我想提供另一种解决方案,我有一个问题。为什么不使用 FPSRenderer 实例,或者为什么不在另一个具有屏幕尺寸的投影矩阵的批次上绘制 fps 标签?

于 2015-11-18T13:42:09.247 回答
0

Netero 的回答很有效。如果你想让代码更干净,你可以写一个辅助函数:

public static void setLineHeight(BitmapFont font, float height) {
    font.getData().setScale(height * font.getScaleY() / font.getLineHeight());
}
于 2018-12-12T20:12:29.387 回答