Java 为什么我的精灵在LibGDX中闪烁?

Java 为什么我的精灵在LibGDX中闪烁?,java,libgdx,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.

我正试图用精灵创建一个主菜单。然而,当它被渲染和所有东西时,精灵会快速闪烁。为什么要这样做

@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);
}

这在渲染方法中进行:

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

Render是一种不断调用的方法,当屏幕显示时,show只调用一次。

如果使用这段代码,事情应该会正常进行。在每一帧中,清除屏幕,然后渲染精灵

@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();
}

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

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();
}

谢谢你的回复,但是当我把这三行代码放到render方法中时,我只得到一个空白screen.Gdx.gl.glClearColor(0,0,0,1);Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);你必须把它放在后面。不幸的是,我仍然有一个黑屏。看看我的答案。它应该能解决你的问题。