如何从.fnt位图字体绘制时正确计算y位置?

我想要渲染文本到位图以后使用它作为贴图纹理。 我已经阅读了libGDX字体绘制代码,并想出了这个:

private void writeTextToPixmap(Pixmap destPixmap, Pixmap fontPixmap, BitmapFont.BitmapFontData fontData, int startX, int startY, String text) { int cursor = startX; char[] chars = text.toCharArray(); for(int i = 0; i < chars.length; i++) { BitmapFont.Glyph glyph = fontData.getGlyph(chars[i]); destPixmap.drawPixmap(fontPixmap, glyph.srcX, glyph.srcY, glyph.width, glyph.height, cursor + glyph.xoffset, startY + glyph.yoffset, glyph.width, glyph.height); cursor += glyph.xadvance; } } 

字体是用Hiero使用默认设置生成的。

但结果并不像预期的那样: http : //i.imgur.com/T7Isg2R.png

用法:

  Pixmap pixmap = new Pixmap(1024, 1024, Pixmap.Format.RGBA8888); BitmapFont.BitmapFontData fontData = new BitmapFont.BitmapFontData(Gdx.files.internal("data/couriernew.fnt"), false); Pixmap fontPixmap = new Pixmap(Gdx.files.internal("data/couriernew.png")); writeTextToPixmap(pixmap, fontPixmap, fontData, 300, 400, "ga"); 

问题隐藏在这一行:

  BitmapFont.BitmapFontData fontData = new BitmapFont.BitmapFontData(Gdx.files.internal("data/couriernew.fnt"), true); 

第二个参数:字体应该倒置。