gpt4 book ai didi

fonts - libGDX 平滑 FreeTypeFonts

转载 作者:行者123 更新时间:2023-12-02 21:10:54 28 4
gpt4 key购买 nike

我在使用 libGDX 获得平滑字体时遇到问题。我已经在这个网站上搜索,并在谷歌上,我尝试了这些问题的解决方案herehere ,但我的字体渲染效果总是很差。

示例: enter image description 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,我仍然得到相同的结果。就像过滤器对于字体来说毫无用处一样。

我错过了什么?

谢谢!

最佳答案

好的,最后这是一个解决方案:我只是将纹理过滤器从 MipMapLinearNearest 更改为 Linear,并且获得了平滑的纹理: enter image description here

起初我非常不愿意使用线性滤波器,因为我认为它会降低帧速率,根据这个post 。但我没有观察到 FPSLogger 有任何 fps 下降,所以看起来一切都很好。

这是我使用资源管理器生成字体的最终代码:

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.minFilter = TextureFilter.Linear;
sizeParams.fontParameters.magFilter = TextureFilter.Linear;
assetsManager.load("font1.ttf", BitmapFont.class, sizeParams);

关于fonts - libGDX 平滑 FreeTypeFonts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732448/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com