2013-12-22 32 views
1

我想知道是否有可能在纹理中保存spriteBatch。Libgdx在纹理中保存SpriteBatch

SpriteBatch batch = new SpriteBatch(); 

图纸批量内几件事后,我想保存包含SpriteBatch所有的事情在一个纹理(有点像截图)。

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

感谢您

+0

如果它只是为了拍摄屏幕截图然后使用这个。 https://code.google.com/p/libgdx-users/wiki/Screenshots –

+0

我知道这个代码,并且它有两个原因不好:1.您必须将屏幕截图保存在文件中。 2.保存在一个文件中并将文件加载到Texture中会太长,这会浪费大量的时间。请记住,我想纹理 – LeSam

+0

使用纹理=新纹理(pixmap),而不是保存到文件 –

回答

2

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

如果您可以提前做出渲染纹理的决定,FBO将可以正常工作。一个副作用是图像不是呈现在屏幕上,而是仅呈现给纹理。 (当然,它很容易将纹理渲染到屏幕上)。

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

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