Java 使用libgdx在运行时使用文本生成纹理

Java 使用libgdx在运行时使用文本生成纹理,java,opengl,bitmap,libgdx,pixmap,Java,Opengl,Bitmap,Libgdx,Pixmap,我正在做一个电话文字游戏。昨天,我决定使用libgdx切换到OpenGL,以尝试提高图形性能和电池使用率,从而瞄准更多平台 字母平铺绘图在2D画布上的工作方式是,每个字母平铺都会为自己创建一个位图。我想: 从背景位图创建新的可变位图 在新位图上绘制字母 应用其他特定于瓷砖的效果 为每个帧绘制新位图 使用libgdx实现我想要的目标的最佳方式是什么 我是否应该采取类似的做法?如果是,怎么做?我尝试使用pixmaps,但无法确定如何绘制字体 我是否应该从a-Z创建一个包含所有所需瓷砖的sprites

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

字母平铺绘图在2D画布上的工作方式是,每个字母平铺都会为自己创建一个位图。我想:

  • 从背景位图创建新的可变位图
  • 在新位图上绘制字母
  • 应用其他特定于瓷砖的效果
  • 为每个帧绘制新位图
  • 使用libgdx实现我想要的目标的最佳方式是什么

  • 我是否应该采取类似的做法?如果是,怎么做?我尝试使用pixmaps,但无法确定如何绘制字体
  • 我是否应该从a-Z创建一个包含所有所需瓷砖的spritesheet并使用它?当我调整瓷砖背景的设计时有点乏味
  • 我应该做些完全不同的事情吗
  • 答复 显然,最终的代码不应该每次都从文件中加载,因为这是一个巨大的性能损失,但是这里有一个工作示例代码,供尝试实现相同结果的其他人使用

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

    Quote:您可以创建一个
    BitmapFontData
    实例,并使用
    BitmapFontData.getImagePath()
    加载包含
    字形的
    Pixmap
    。然后,您可以使用
    BitmapFontData.getGlyph
    获取特定glyph在
    Pixmap
    中的位置,您可以将其与
    Pixmap.drawPixmap()
    一起使用以执行您想要执行的操作。资料来源:


    您可以获取到
    BitmapFontData
    的路径,并使用路径的文件句柄创建一个新的Pixmap,如下所示:

    Pixmap(文件句柄文件)

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

    资料来源:

    使用
    Gdx.files.internal(pathfromBitmapFontData)
    作为文件句柄,您将获得包含所有GLYP的pixmap

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

    尝试一下,如果它是一个内部的!我可能不是内部文件我不知道


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


    这也应该起作用

    我的问题是如何将位图字体绘制到pixmap上。有什么想法吗?i、 如何从位图字体中获取pixmap?我也发现了这一点,如果您能解释我如何“使用BitmapFontData.getImagePath加载包含字形的pixmap”,那么这就是进度。我目前正在使用libgdx默认字体进行测试。我将尝试创建位图字体,看看是否可以使用它。您可以使用默认设置通过
    getData()
    执行此操作,它返回
    BitmapFontData
    。您甚至可以获得pixmap文件的文件句柄<代码>字体.getData().getFontFile()谢谢你的帮助。我无法使用默认的位图字体。不过,我最终还是用我创建的一个来实现它。我将用最终代码更新我的问题。