【问题标题】:Libgdx save SpriteBatch in a textureLibgdx 将 SpriteBatch 保存在纹理中
【发布时间】:2023-03-30 23:21:01
【问题描述】:

我想知道是否可以将 spriteBatch 保存在纹理中

 SpriteBatch batch = new SpriteBatch();

在批处理中绘制了一些东西之后,我想将所有包含 SpriteBatch 的东西保存在一个纹理中(类似于屏幕截图强>)。

我不知道怎么做,我在网上和 libgdx 文档上搜索但没有找到。

谢谢你

【问题讨论】:

  • 如果它只是为了截屏然后使用它。 code.google.com/p/libgdx-users/wiki/Screenshots
  • 我知道这段代码,它不好有两个原因: 1. 您必须将屏幕截图保存在一个文件中。 2. 保存在一个文件中并在一个Texture中加载文件会太长,在执行过程中会浪费很多时间。请记住,我希望在纹理中使用此屏幕截图
  • 使用 texture = new texture(pixmap) 而不是保存到文件
  • 我在 0x673b3000 (code=1) 线程 5116 (Thread-19425) 处收到致命信号 11 (SIGSEGV)
  • 使用下面的代码转换成纹理

标签: java textures libgdx spritebatch


【解决方案1】:

您可以渲染到FrameBufferObject (FBO)。见https://github.com/mattdesl/lwjgl-basics/wiki/FrameBufferObjects

如果您可以提前决定渲染到纹理,则 FBO 将起作用。一个副作用是图像不会渲染到屏幕上,而只会渲染到纹理上。 (当然,之后将纹理渲染到屏幕上很容易)。

正如另一个答案所建议的,您可以从屏幕缓冲区中刮取字节,并从生成的Pixmap 中创建一个Texture(您不需要一直到文件系统)。请参阅https://code.google.com/p/libgdx-users/wiki/Screenshots(只需使用getScreenshot 方法获取Pixmap 的字节数)。

【讨论】:

    【解决方案2】:

    像这样使用纹理转换:

    final Pixmap pmap = new Pixmap(bytes, 0, bytes.length);
    try{
        Gdx.app.postRunnable(new Runnable(){
            public void run(){
            texture=new Texture(pmap);
            }
        });
    }catch(Exception e){
        e.printStackTrace();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 2011-11-24
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多