LibGDX游戏突然卡顿了?



我最近在一个新的LibGDX项目上重新开始。我非常习惯使用它。但是这个项目(以及我最近建立的每个新项目(都卡顿了很多。虽然 FPS 很好,但物体的移动是卡顿的。我尝试打开和关闭 vsync,但没有多大帮助。怎么可能突然发生这种事?我错过了什么吗?

public class Run {
public static void main(String[] args) {
var config = new LwjglApplicationConfiguration();
config.title = "MyGame";
config.width = 1280;
config.height = 800;
new LwjglApplication(new MyGame(), config);
}
}
public class MyGame extends Game {
public void create() {
this.setScreen(new MainScreen());
}
public void dispose() {
}
}
public class MainScreen extends ScreenAdapter {
private BitmapFont font = new BitmapFont();
private SpriteBatch batch = new SpriteBatch();
private OrthographicCamera camera = new OrthographicCamera();
private FitViewport viewport = new FitViewport(1280, 800, camera);
private Sprite sprite = new Sprite(new Texture(Gdx.files.internal("some sprite")));
public void show() {
batch.setColor(Color.WHITE);
}
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if(Gdx.input.isKeyPressed(Input.Keys.D)) {
sprite.setX(sprite.getX() + 150 * Gdx.graphics.getDeltaTime());
}
if(Gdx.input.isKeyPressed(Input.Keys.A)) {
sprite.setX(sprite.getX() - 150 * Gdx.graphics.getDeltaTime());
}
viewport.apply();
batch.setProjectionMatrix(camera.projection);
batch.begin();
font.draw(batch, "Hello LibGDX!", 100f, 100f);
sprite.draw(batch);
batch.end();
}
public void resize(int width, int height) {
viewport.update(width, height);
}
public void dispose() {
font.dispose();
batch.dispose();
}
}

这是我为确认口吃 100% 的时间而设置的最基本的项目。目前我使用的是最新版本的 LibGDX。顺便说一句,自从我完成上一个项目以来,我的硬件没有改变。

float getDeltaTime() 

此值在多个帧上"平滑"或平均,因此它不能正确显示自最后一帧以来的实际经过时间,因此 x 增量与帧增量不匹配。

float getRawDeltaTime()

这确实显示了专门针对最后一帧的增量,并且可以消除卡顿。

最新更新