我正在开发一个电话文字游戏。昨天,我决定使用 libgdx 切换到 OpenGL,以尝试提高图形性能和电池使用率 + 瞄准更多平台。
字母图块在 2D 画布上绘图的方式是每个字母图块都会为自己创建一个位图。我会:
- 从背景位图创建一个新的可变位图。
- 在新位图上绘制字母。
- 应用其他图块特定效果。
- 为每一帧绘制新的位图
使用 libgdx 实现我想要的效果的最佳方法是什么?
- 我应该采取类似的方法吗?如果是这样,怎么办?我尝试使用像素图,但不知道如何绘制字体。
- 我应该创建一个包含 A-Z 所需所有图块的 spritesheet 并直接使用它吗?当我调整瓷砖背景的设计时有点乏味。
- 我应该做一些完全不同的事情吗?
Answer
显然,最终的代码不应每次都从文件中加载,因为这会对性能造成巨大影响,但这里为任何试图实现相同结果的其他人提供了工作示例代码。
// 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);
引用:您可以创建一个BitmapFontData
实例及使用BitmapFontData.getImagePath()
加载一个Pixmap
含有glyphs
。然后您可以使用BitmapFontData.getGlyph
获取特定字形的位置Pixmap
,您可以将其与Pixmap.drawPixmap()
做你想做的事。来源:libgdx 问题 691:将 BitmapFont 绘制到 Pixmap/Texture http://code.google.com/p/libgdx/issues/detail?id=691
你得到的路径是BitmapFontData
并使用文件句柄创建一个新的 Pixmap 到路径:
Pixmap(文件句柄文件)
从给定文件创建一个新的 Pixmap 实例。
Source: 像素图API http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Pixmap.html
Use Gdx.files.internal(pathfromBitmapFontData)
作为文件句柄,你就得到了包含所有 Glyps 的像素图。
Pixmap p = new Pixmap(Gdx.files.internal(myBitmapFontData.getImagePath()))
试试是不是内部的!可能不是内部文件我不知道
Pixmap p = new Pixmap(myFont.getData().getFontFile());
这也应该有效
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)