Libgdx - smotth的字体使用大型RAM

时间:2016-05-30 14:42:27

标签: android libgdx

我有一个视口(360x640),但是如果我在它上面渲染它们就很难看。所以我制作了更大尺寸的缩小尺寸。但现在他们迷失了方向。 (size == 30)

我制作了一个4倍大的视口,所以我不需要缩小它们。但现在我的比赛而不是拿15mb ram需要50mb。 (size == 120)

这是不可接受的。我的纹理比那些糟糕的3个TTF少了30倍的ram。

1 个答案:

答案 0 :(得分:1)

https://github.com/libgdx/libgdx/wiki/Coordinate-systems#world-coordinates。 使用2个视口:

  • 接近像素的一个(与参考目标设备的屏幕分辨率大致相同),仅用于标签,按钮等GUI。
  • 最适合你的游戏逻辑的一个(虽然360x640给你的印象是你使用的香蕉单位(想象中的像素),你不应该这样做)而且你只是为了渲染游戏对象等。

无论哪种方式,资产的大小(在磁盘,RAM或VRAM中)都与视口大小没有任何关系:当您更改视口的大小时,您应该扩展您的资产。您的资产大小应与屏幕上投影时的大小相同。因此,无论您使用3 x 5米的视口还是2560 香蕉的视口1440都无关紧要。重要的是实际屏幕上像素的大小(例如,截取并测量它)。资产的大小应该大小相同,以获得最佳结果。

如果这意味着你需要一个非常大的字体,例如因为您使用具有非常高分辨率的参考目标设备(例如Retina Display),那就是它的样子。您可以通过多种方式解决这个问题,例如:通过渲染到较小的FBO,使用纹理过滤等。但实际情况是,具有如此大分辨率的设备至少配备有足够的内存来保存资产以进行此类分辨率。因此,在这种情况下,使用更多内存并不是真正的问题。

如果您希望定位多个对资产大小有不同限制的分辨率,则可以使用多个资产集。例如,使用ResolutionFileHandleResolver

虽然与您的问题无关,但请注意BitmapFont默认情况下假设近像素完美投影,因此使用整数位置来防止混叠。如果你真的不想使用近像素完美投影,那么你可以使用BitmapFont#setUseIntegerPositions方法禁用它。