2013-11-20 3 views
1

Я хочу нарисовать некоторый текст с помощью BitmapFont до некоторого временного местоположения, а затем нарисую часть этого места до окончательного спрайта. Я думал о том, чтобы нарисовать во временную spritebatch, но нельзя сделать нарисовать spritebatch на другой. Как я мог это сделать?LibGDX draw BitmapFont в промежуточное местоположение (spritebatch)

ответ

0

Вы пытались его записать в pixmap временно? Когда вы хотите нарисовать его, вы можете загрузить pixmap в объект текстуры.

https://github.com/libgdx/libgdx/wiki/Pixmaps

+0

Я бы хотел, но BitmapFont может только рисовать на spritebatch. –

0

Вы можете использовать FrameBuffer. См. Мой пример ниже, вы можете нарисовать все, что хотите, в функции drawBuffer, а затем нарисовать его на экране.

Надеется, что это помогает

--EDIT--

ПРИМЕЧАНИЯ: Вы должны иметь useGL20 = истину; в вашей Конфигурации приложения

public class SpaceMania extends Game { 
@Override 
public void create() { 
    setScreen(new ScreenView()); 
} 

} 

class ScreenView implements Screen{ 
    InputMultiplexer input; 
    FrameBuffer buffer; 

    SpriteBatch screenBatch; 
    ShapeRenderer shape; 

    @Override 
    public void render(float delta) { 
    //Draw Buffer 
    drawBuffer(); 


    //Draw buffer to screen 
    screenBatch.begin(); 
    screenBatch.draw(buffer.getColorBufferTexture(), 0,0,600,200); 
    screenBatch.end(); 
    } 

    public void drawBuffer(){ 
    buffer.begin(); 
    shape.begin(ShapeType.FilledCircle); 
    shape.setColor(Color.RED); 
    shape.filledCircle(50, 50, 50); 
    shape.end(); 
    buffer.end(); 
    } 
    @Override 
    public void show() { 
    buffer = new FrameBuffer(Format.RGBA8888, 200, 200,false); 
    screenBatch = new SpriteBatch(); 
    shape = new ShapeRenderer(); 
    } 

    @Override 
    public void hide() { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void resize(int width, int height) { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void pause() { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void resume() { 
    // TODO Auto-generated method stub 

    } 

    @Override 
    public void dispose() { 
    // TODO Auto-generated method stub 

    } 
} 
Смежные вопросы