Libgdx在纹理中保存SpriteBatch

时间:2013-12-22 16:24:13

标签: java textures libgdx spritebatch

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

 SpriteBatch batch = new SpriteBatch();

在批量内容中绘制了一些东西之后,我想在一个纹理中保存包含SpriteBatch的所有内容(类似于截图)。

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

谢谢你

2 个答案:

答案 0 :(得分:2)

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

如果您可以提前决定渲染纹理,那么FBO将会正常工作。一个副作用是图像不会渲染到屏幕,而只会渲染到纹理。 (当然,它很容易在屏幕上渲染纹理)。

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

答案 1 :(得分:1)

使用转换为这样的纹理:

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();
}