1

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

 SpriteBatch batch = new SpriteBatch();

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

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

谢谢

4

2 回答 2

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字节)。

于 2013-12-22T20:57:18.967 回答
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();
}
于 2013-12-22T19:50:49.867 回答