我有一个视口(360x640),但是如果我在它上面渲染它们就很难看。所以我制作了更大尺寸的缩小尺寸。但现在他们迷失了方向。 (size == 30)
我制作了一个4倍大的视口,所以我不需要缩小它们。但现在我的比赛而不是拿15mb ram需要50mb。 (size == 120)
这是不可接受的。我的纹理比那些糟糕的3个TTF少了30倍的ram。
答案 0 :(得分:1)
见https://github.com/libgdx/libgdx/wiki/Coordinate-systems#world-coordinates。 使用2个视口:
无论哪种方式,资产的大小(在磁盘,RAM或VRAM中)都与视口大小没有任何关系:当您更改视口的大小时,您应该不扩展您的资产。您的资产大小应与屏幕上投影时的大小相同。因此,无论您使用3 x 5米的视口还是2560 香蕉的视口1440都无关紧要。重要的是实际屏幕上像素的大小(例如,截取并测量它)。资产的大小应该大小相同,以获得最佳结果。
如果这意味着你需要一个非常大的字体,例如因为您使用具有非常高分辨率的参考目标设备(例如Retina Display),那就是它的样子。您可以通过多种方式解决这个问题,例如:通过渲染到较小的FBO,使用纹理过滤等。但实际情况是,具有如此大分辨率的设备至少配备有足够的内存来保存资产以进行此类分辨率。因此,在这种情况下,使用更多内存并不是真正的问题。
如果您希望定位多个对资产大小有不同限制的分辨率,则可以使用多个资产集。例如,使用ResolutionFileHandleResolver
。
虽然与您的问题无关,但请注意BitmapFont
默认情况下假设近像素完美投影,因此使用整数位置来防止混叠。如果你真的不想使用近像素完美投影,那么你可以使用BitmapFont#setUseIntegerPositions
方法禁用它。