我正在开发手机文字游戏。昨天我决定使用libgdx切换到OpenGL来尝试提高图形性能和电池使用率+以更多平台为目标。
字母图块绘制在2D画布上的工作方式是每个字母图块都会为自己创建一个位图。我会:
使用libgdx实现我想要的最佳方式是什么?
显然最终的代码不应该每次都从文件中加载,因为这是一个巨大的性能损失,但这里是其他任何试图获得相同结果的人的示例代码。
// load the background into a pixmap
Pixmap tile = new Pixmap(Gdx.files.getFileHandle(
"someFile.png", FileType.Internal));
// load the font
FileHandle handle = Gdx.files.getFileHandle("someFont.fnt",
FileType.Internal);
BitmapFont font = new BitmapFont(handle);
// get the glypth info
BitmapFontData data = font.getData();
Pixmap fontPixmap = new Pixmap(Gdx.files.internal(data.imagePaths[0]));
Glyph glyph = data.getGlyph(getLetterToDraw().charAt(0));
// draw the character onto our base pixmap
tile.drawPixmap(fontPixmap, (TILE_WIDTH - glyph.width) / 2, (TILE_HEIGHT - glyph.height) / 2,
glyph.srcX, glyph.srcY, glyph.width, glyph.height);
// save this as a new texture
texture = new Texture(tile);
答案 0 :(得分:3)
Quote:您可以创建BitmapFontData
个实例并使用BitmapFontData.getImagePath()
加载包含Pixmap
的{{1}}。然后,您可以使用glyphs
获取BitmapFontData.getGlyph
中特定字形的位置,您可以使用Pixmap
来执行您想要执行的操作。资料来源:libgdx Issue 691: Draw BitmapFont to Pixmap/Texture
您将获得Pixmap.drawPixmap()
的路径并使用Filehandle创建一个新的Pixmap到此路径:
Pixmap(FileHandle文件)
从给定文件创建一个新的Pixmap实例。
来源:PixmapAPI
使用BitmapFontData
作为文件句柄,你得到了包含所有Glyps的像素图。
Gdx.files.internal(pathfromBitmapFontData)
尝试一下它的内部!可能不是我不知道的内部文件
Pixmap p = new Pixmap(Gdx.files.internal(myBitmapFontData.getImagePath()))
这也应该有用