我正在做一个电话文字游戏。昨天我决定使用 libgdx 切换到 OpenGL 以尝试提高图形性能和电池使用 + 以针对更多平台。
在 2D 画布上绘制字母拼贴的方式是每个字母拼贴都会为自己创建一个位图。我会:
- 从背景位图创建一个新的可变位图。
- 在新位图上的字母上绘制。
- 应用其他瓷砖特定效果。
- 为每一帧绘制新的位图
使用 libgdx 实现我想要的最佳方式是什么?
- 我应该采用类似的方法吗?如果是这样,怎么做?我尝试使用像素图,但不知道如何绘制字体。
- 我是否应该使用 AZ 中所有必需的图块创建一个精灵表并使用它?当我调整瓷砖背景的设计时有点乏味。
- 我应该做一些完全不同的事情吗?
回答
显然,最终代码不应该每次都从文件中加载,因为这会对性能造成巨大影响,但是对于其他试图达到相同结果的人来说,这里是工作示例代码。
// 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);