BitmapFont不在视口中绘图(LibGDX)

时间:2016-07-23 18:40:37

标签: libgdx viewport

所以我有一个FillViewport,我想绘制一些文本来匹配在屏幕上移动的其他一些对象的位置。当我尝试在与其他对象完全相同的位置绘制文本内部时,根本没有任何内容。我知道字体本身是有效的,因为我可以在单独的HUD ScreenViewport上绘制没有问题,但是当我尝试在FillViewport上绘制时,我什么也得不到。我正在做的事情有什么问题吗?

public class MyScreen implements Screen{
SpriteBatch batch;
ShapeRenderer renderer;
FillViewport viewport;
ScreenViewport hudViewport

@Override
public void show(){
    font = new BitmapFont();
    font.getData().setScale(1);
    font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
    font.setColor(Color.BLACK);

    spriteBatch = new SpriteBatch();
    renderer = new ShapeRenderer();
    renderer.setAutoShapeType(true);
    viewport = new FillViewport(Constants.WORLD_WIDTH, Constants.WORLD_HEIGHT);
    hudViewport = new ScreenViewport();
}

public void render(float delta){

    viewport.apply(true);
    Gdx.gl.glClearColor(Constants.BACKGROUND_COLOR.r, Constants.BACKGROUND_COLOR.g, Constants.BACKGROUND_COLOR.b, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    spriteBatch.setProjectionMatrix(viewport.getCamera().combined);
    renderer.setProjectionMatrix(viewport.getCamera().combined);

    spriteBatch.begin();
    renderer.begin();
    renderer.set(ShapeRenderer.ShapeType.Filled);

    renderer.setColor(Color.BLUE);
    renderer.circle(renderer.circle(Constants.WORLD_WIDTH / 2, Constants.WORLD_HEIGHT / 2, radius, 40);  //this works

    font.draw(spriteBatch, "TEST", Constants.WORLD_WIDTH / 2, Constants.WORLD_HEIGHT / 2);  //this doesn't

    spriteBatch.end();
    renderer.end();

    hudViewport.apply();
    spriteBatch.setProjectionMatrix(hudViewport.getCamera().combined);
    spriteBatch.begin();

    font.draw(spriteBatch, "TEST", hudViewport.getScreenWidth() - 100, hudViewport.getScreenHeight() - 10); //this works

    spriteBatch.end();
}

0 个答案:

没有答案