Java LibGDX FreeType字体模糊
我正在使用屏幕高度百分比和设置百分比动态生成字体(很明显,将来会乘以密度) 一些注释。 我在读OTF文件。 使用最新版本的LibGDX(1.2.0版) 我有以下问题: (字体中的大字符断裂,看起来非常模糊,但只有在中大字符和小字符时,看起来非常清晰) 我的预设字体大小:Java LibGDX FreeType字体模糊,java,android,opengl-es,libgdx,freetype,Java,Android,Opengl Es,Libgdx,Freetype,我正在使用屏幕高度百分比和设置百分比动态生成字体(很明显,将来会乘以密度) 一些注释。 我在读OTF文件。 使用最新版本的LibGDX(1.2.0版) 我有以下问题: (字体中的大字符断裂,看起来非常模糊,但只有在中大字符和小字符时,看起来非常清晰) 我的预设字体大小: //Font sizes, small, med, large as a percentage of the screen. public static float FONT_SIZE_LARG
//Font sizes, small, med, large as a percentage of the screen.
public static float
FONT_SIZE_LARGE = 0.175f,
FONT_SIZE_MEDIUM = 0.06f,
FONT_SIZE_SMALL = 0.04f;
我的字体生成器设置
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
FreeTypeFontGenerator generator;
this.generator = new FreeTypeFontGenerator(Gdx.files.internal(filename));
创建实际字体:
//Create a new font and add it to available font sizes.
public BitmapFont createFont(float size, float color)
{
this.parameter.size = Math.round(size);
BitmapFont bitmapFont = generator.generateFont(parameter);
bitmapFont.setColor(color);
listOfFonts.add(new FontStorage(bitmapFont, size));
return bitmapFont;
}
现在我已经在不同的设备上尝试了一些东西,但仍然有相同的问题。我想这可能是因为它不是2的幂?(字体是否需要2的幂才能成为偶数?)
字体绘制在许多不同的屏幕分辨率上,因此制作三种特定大小的位图字体是不可能的
有人能帮我一下吗?我想出来了,如果你想要最清晰的字体,你需要设置3种设置 前两个是在从文件创建之前(可以是OTF或TTF),它们是:
//Make sure you ceil for your current resolution otherwise you'll be nasty cut-offs.
this.parameter.size = (int)Math.ceil(size);
this.generator.scaleForPixelHeight((int)Math.ceil(size));
下一步是设置放大和缩小过滤器。(如果你想缩放,我不是因为我画的几乎是完美的像素)。下面是代码:
this.generator = new FreeTypeFontGenerator(Gdx.files.internal(filename));
this.parameter.minFilter = Texture.TextureFilter.Nearest;
this.parameter.magFilter = Texture.TextureFilter.MipMapLinearNearest;
这将在任何分辨率下为您提供超级清晰的字体。GL。如果使用不同大小的单个位图字体,您需要使用mipmapping使其在所有大小下都具有良好的外观。可能还需要使用MipMapLinearLinear作为minFactor。我使用多个位图字体大小来精确匹配屏幕分辨率,但您能链接或解释一下吗?哦,对不起,我很抱歉误解了您正在做的事情。Mipmapping在您这样做时是不必要的。我也不认为二的威力是您的问题。据我所知,非POT只会让您面临性能降低的风险(如果您使用旧版本的libgdx并使用OpenGL ES 1.0/1.1,则某些设备上可能会出现纯黑色纹理).我没有太多使用字体生成器,所以我不知道还有什么好建议。我使用的是最新版本,完全不知道如果它与res完全匹配,为什么会这样做。如果你愿意,我可以将整个源代码发送给你?我建议你去libgdx.com论坛。你可能会在那里找到知道答案的人。我没有答案首先,我想知道是什么导致了这个问题,所以我和你一样迷茫。我再过一天也不会了。如果我错了,请纠正我,我听说在放大中设置mipmapping没有用。mipmapping仅用于缩小。