我想知道是否可以将 spriteBatch 保存在纹理中。
SpriteBatch batch = new SpriteBatch();
在批处理中绘制了一些东西之后,我想将所有包含 SpriteBatch 的东西保存在一个纹理中(类似于屏幕截图)。
我不知道该怎么做,我在网上和 libgdx 文档上搜索但没有找到。
谢谢
我想知道是否可以将 spriteBatch 保存在纹理中。
SpriteBatch batch = new SpriteBatch();
在批处理中绘制了一些东西之后,我想将所有包含 SpriteBatch 的东西保存在一个纹理中(类似于屏幕截图)。
我不知道该怎么做,我在网上和 libgdx 文档上搜索但没有找到。
谢谢
您可以渲染到FrameBufferObject
(FBO)。见https://github.com/mattdesl/lwjgl-basics/wiki/FrameBufferObjects
如果您可以提前决定渲染到纹理,则 FBO 将起作用。一个副作用是图像不会渲染到屏幕上,而只会渲染到纹理上。(当然,之后很容易将纹理渲染到屏幕上)。
正如另一个答案所建议的那样,您可以从屏幕缓冲区中刮下字节,并Texture
从结果中生成一个Pixmap
(您不需要一直到文件系统)。请参阅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();
}