我想知道是否有可能在纹理中保存spriteBatch。Libgdx在纹理中保存SpriteBatch
SpriteBatch batch = new SpriteBatch();
图纸批量内几件事后,我想保存包含SpriteBatch所有的事情在一个纹理(有点像截图)。
我不知道如何去做,我在网上和libgdx文档搜索,但没有找到。
感谢您
我想知道是否有可能在纹理中保存spriteBatch。Libgdx在纹理中保存SpriteBatch
SpriteBatch batch = new SpriteBatch();
图纸批量内几件事后,我想保存包含SpriteBatch所有的事情在一个纹理(有点像截图)。
我不知道如何去做,我在网上和libgdx文档搜索,但没有找到。
感谢您
可以渲染到FrameBufferObject
(FBO)。请参阅https://github.com/mattdesl/lwjgl-basics/wiki/FrameBufferObjects
如果您可以提前做出渲染纹理的决定,FBO将可以正常工作。一个副作用是图像不是呈现在屏幕上,而是仅呈现给纹理。 (当然,它很容易将纹理渲染到屏幕上)。
正如其他答案建议的那样,您可以从屏幕缓冲区中擦除字节,并从Pixmap
(您不需要一直到文件系统)创建一个Texture
。请参阅https://code.google.com/p/libgdx-users/wiki/Screenshots(只需使用getScreenshot
方法获取字节的Pixmap
)。
使用转换到纹理像这样:
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();
}
如果它只是为了拍摄屏幕截图然后使用这个。 https://code.google.com/p/libgdx-users/wiki/Screenshots –
我知道这个代码,并且它有两个原因不好:1.您必须将屏幕截图保存在文件中。 2.保存在一个文件中并将文件加载到Texture中会太长,这会浪费大量的时间。请记住,我想纹理 – LeSam
使用纹理=新纹理(pixmap),而不是保存到文件 –