3

我正在做一个电话文字游戏。昨天我决定使用 libgdx 切换到 OpenGL 以尝试提高图形性能和电池使用 + 以针对更多平台。

在 2D 画布上绘制字母拼贴的方式是每个字母拼贴都会为自己创建一个位图。我会:

  1. 从背景位图创建一个新的可变位图。
  2. 在新位图上的字母上绘制。
  3. 应用其他瓷砖特定效果。
  4. 为每一帧绘制新的位图

使用 libgdx 实现我想要的最佳方式是什么?

  1. 我应该采用类似的方法吗?如果是这样,怎么做?我尝试使用像素图,但不知道如何绘制字体。
  2. 我是否应该使用 AZ 中所有必需的图块创建一个精灵表并使用它?当我调整瓷砖背景的设计时有点乏味。
  3. 我应该做一些完全不同的事情吗?

回答

显然,最终代码不应该每次都从文件中加载,因为这会对性能造成巨大影响,但是对于其他试图达到相同结果的人来说,这里是工作示例代码。

    // 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);
4

1 回答 1

3

Quote: 您可以创建一个BitmapFontData实例并使用BitmapFontData.getImagePath()来加载一个Pixmap包含glyphs. 然后,您可以使用BitmapFontData.getGlyph来获取 中特定字形的位置Pixmap,您可以使用它Pixmap.drawPixmap()来做您想做的事情。来源:libgdx 第 691 期:将 BitmapFont 绘制到 Pixmap/Texture


你得到路径BitmapFontData并使用 Filehandle 创建一个新的 Pixmap 到路径:

像素图(文件句柄文件)

从给定文件创建一个新的 Pixmap 实例。

来源:PixmapAPI

用作文件句柄,您将Gdx.files.internal(pathfromBitmapFontData)获得包含所有 Glyps 的像素图。

Pixmap p = new Pixmap(Gdx.files.internal(myBitmapFontData.getImagePath()))

试试它是否是内部的!可能不是内部文件,我不知道


Pixmap p = new Pixmap(myFont.getData().getFontFile());

这也应该有效

于 2014-02-20T13:22:48.387 回答