【发布时间】:2013-12-04 10:43:09
【问题描述】:
我想使用 BitmapFont 绘制一些文本 临时位置,然后绘制该位置的一部分 到最后的 spritebatch。我在考虑画画 到临时 spritebatch,但不可能 将 spritebatch 绘制到另一个上。我怎么能做到这一点?
【问题讨论】:
我想使用 BitmapFont 绘制一些文本 临时位置,然后绘制该位置的一部分 到最后的 spritebatch。我在考虑画画 到临时 spritebatch,但不可能 将 spritebatch 绘制到另一个上。我怎么能做到这一点?
【问题讨论】:
您可以使用 FrameBuffer。看我下面的例子,你可以在 drawBuffer 函数中绘制任何你想要的东西,然后在屏幕上绘制它。
希望对你有帮助
--编辑--
注意:你必须有 useGL20 = true;在您的应用程序配置中
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
}
}
【讨论】:
您是否尝试过将其临时写入像素图中? 当你想绘制它时,你可以将像素图加载到纹理对象中。
【讨论】: