【发布时间】:2015-02-26 00:35:00
【问题描述】:
我在使用 libGDX 获得平滑字体时遇到问题。我已经在这个网站上搜索过,在谷歌上,我尝试了here和here这些问题的解决方案,但我的字体总是呈现不佳。
示例:
我尝试了几种方法,总是得到与上图描述的完全相同的结果。
我用来生成字体的一种方法是:
public static BitmapFont generateFont(String fontPath, float size){
FileHandle fontFile = Gdx.files.internal(fontPath);
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
FreeTypeFontGenerator.FreeTypeFontParameter params = new FreeTypeFontGenerator.FreeTypeFontParameter();
params.genMipMaps = true;
params.magFilter = TextureFilter.MipMapLinearNearest;
params.minFilter = TextureFilter.MipMapLinearNearest;
params.size = (int)Math.ceil(size);
generator.scaleForPixelHeight((int)Math.ceil(size));
BitmapFont f = generator.generateFont(params);
return f;
}
我尝试的另一个策略是在 AssetManager 中加载字体:
FileHandleResolver resolver = new InternalFileHandleResolver();
assetsManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
assetsManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
FreeTypeFontLoaderParameter size4Params = new FreeTypeFontLoaderParameter();
sizeParams.fontFileName = "Fonts/GOTHIC.TTF";
sizeParams.fontParameters.size = (int)Math.ceil(2*Gdx.graphics.getWidth()/9);
sizeParams.fontParameters.genMipMaps = true;
sizeParams.fontParameters.minFilter = TextureFilter.MipMapLinearNearest;
sizeParams.fontParameters.magFilter = TextureFilter.MipMapLinearNearest;
assetsManager.load("font1.ttf", BitmapFont.class, sizeParams);
这两种策略的结果是一样的,但最让我恼火的是,即使我去掉了“genMipMaps = true”,以及这些方法中的TextureFilters,我仍然得到相同的结果。就像过滤器对字体没用一样。
我错过了什么?
谢谢!
【问题讨论】:
-
您的 OpenGL 视口是否与屏幕尺寸完全相同? (可能是字体很好,并且其他地方发生了缩放?)
-
我没有触摸视口,所以默认情况下它应该与屏幕大小相同,我猜。
-
可能是viewport的问题,我用的是FitViewport,字体一点都不流畅。如何设置视口以使字体平滑?
标签: fonts filter libgdx freetype mipmaps