libgdx位图字体以小比例显示文本

libgdx位图字体以小比例显示文本,libgdx,Libgdx,我有正交摄影机和viewport16x9。 例如,让我们假设设备的实际分辨率是1024x576 this.cam = new OrthographicCamera(16, 9); 我创建位图字体的方式如下: FreetypeFontLoader.FreeTypeFontLoaderParameter params = new FreetypeFontLoader.FreeTypeFontLoaderParameter(); params.fontFileName = "font.ttf"; p

我有
正交摄影机
和viewport
16x9
。 例如,让我们假设设备的实际分辨率是
1024x576

this.cam = new OrthographicCamera(16, 9);
我创建位图字体的方式如下:

FreetypeFontLoader.FreeTypeFontLoaderParameter params = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
params.fontFileName = "font.ttf";
params.fontParameters.size = 19;
字体大小(以像素为单位)iz 19。这是这样计算的:
屏幕高度(576)/cameraviewperthweight(9)*0.3

0.3是相机单位的字体大小

因为字体是在上面提到的相机上呈现的,所以我们必须将字体缩放到相机大小:

font.getData().setScale(0.015f);// 0.3/19
我不知道我的数学是否正确,但这在libgdx版本1.7.1上运行良好。如果我更新到任何更高版本(目前是1.9.2,但我也尝试了1.7.2),字体就不会显示

我做错了什么?

您是否只需将大小设置为.3,而不必进一步缩放?大小为int,以像素为单位,因此我强烈建议使用屏幕大小的摄像头来显示文本和UI。然后,您可以轻松地保持它看起来清晰,并使用最近的过滤进行绘制。仅在游戏世界中使用任意单位和相机大小。@Tenfour04我不能这样做,因为这是在游戏文本中,它在游戏相机上的位置应该始终相同……您可以使用gameCam.project()将游戏世界文本位置投影到屏幕坐标,但是我想如果你需要在游戏中的其他对象中对文本进行深度排序,那你就不走运了。我不确定您的问题,但您是否在文本上调用了setUseIntegerPositions(false)?您是否只需将大小设置为.3,而不必进行任何进一步的缩放?大小为int,以像素为单位,因此我强烈建议使用屏幕大小的摄像头来显示文本和UI。然后,您可以轻松地保持它看起来清晰,并使用最近的过滤进行绘制。仅在游戏世界中使用任意单位和相机大小。@Tenfour04我不能这样做,因为这是在游戏文本中,它在游戏相机上的位置应该始终相同……您可以使用gameCam.project()将游戏世界文本位置投影到屏幕坐标,但是我想如果你需要在游戏中的其他对象中对文本进行深度排序,那你就不走运了。我不确定您的问题,但您是否在文本中调用了setUseIntegerPositions(false)?