2013-12-22 3 views
1

Я хотел бы знать, возможно ли это сохранить spriteBatch в текстуре.Libgdx save 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 будет работать, если вы согласны с тем, чтобы сделать визуализацию текстуры заранее. Один побочный эффект заключается в том, что изображение не отображается на экране, а только текстуре. (Его достаточно легко сделать текстуру на экране потом, конечно).

В качестве другого предлагаемого ответа вы можете очистить байты от экранного буфера и сделать Texture из полученного Pixmap (вам не нужно прокладывать путь до файловой системы). См. 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(); 
} 
Смежные вопросы