我正在尝试使用精灵创建一个主菜单。然而,当它被渲染和一切时,精灵快速闪烁。为什么要这样做?
@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);
}
答案 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();
}