为什么我的精灵会在LibGDX中闪现?

时间:2013-08-19 17:31:07

标签: java libgdx

我正在尝试使用精灵创建一个主菜单。然而,当它被渲染和一切时,精灵快速闪烁。为什么要这样做?

@Override
public void show() {
    batch = new SpriteBatch();

    texture = new Texture("ui/mainmenu.png");
    mainMenu = new Sprite(texture);
    mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

    batch.begin();
    mainMenu.draw(batch);
    batch.end();
}

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}

3 个答案:

答案 0 :(得分:2)

这适用于你的渲染方法:

batch.begin();
mainMenu.draw(batch);
batch.end();

Render是不断调用的方法,show仅在显示屏幕时调用一次。

答案 1 :(得分:0)

如果你使用这个确切的代码,事情应该有效。每一帧,你清除你的屏幕,然后渲染你的精灵。

@Override
public void show() {
    batch = new SpriteBatch();

    texture = new Texture("ui/mainmenu.png");
    mainMenu = new Sprite(texture);
    mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

}

@Override
public void render(float delta) {
    //clear screen to black.
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //render sprite
    batch.begin();
    mainMenu.draw(batch);
    batch.end();
}

答案 2 :(得分:0)

使用正交相机渲染精灵。这可能对你有用

OrthographicCamera cam;
@Override
public void show() {
    batch = new SpriteBatch();
    cam= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    cam.position.set(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2,0);
    cam.update();
    texture = new Texture("ui/mainmenu.png");
    mainMenu = new Sprite(texture);
    mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

}

@Override
public void render(float delta) {
    //clear screen to black.
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //render sprite
    batch.setProjectionMatrix(cam.combined);
    batch.begin();
    mainMenu.draw(batch);
    batch.end();
}