甚至在最简单的项目中也会出现问题

tob*_*oef 5 performance libgdx

我做了一个小小的"游戏"来测试我在实际游戏中注意到的一些口吃,我不能为我的生活弄清楚为什么会这样.我做了一个最简单的项目,我可以测试一下,但我仍然得到相当沉重的口吃.FPS仍然是60,但每隔几秒,有时甚至更多,游戏将会口吃.

我已经在移动和高端电脑上尝试过它,奇怪的是,它在PC上更加引人注目,尽管它仍然出现在手机上.

我无法上传它的视频,因为它已经在录制中消失了,所以如果你想测试它,可以自己编译项目.这是代码:

public class LagTest extends ApplicationAdapter {
    SpriteBatch batch;
    Texture dot;
    float x;
    float y;
    float speed;
    float dotWidth;
    int screenWidth;

    @Override
    public void create () {
        batch = new SpriteBatch();
        dot = new Texture("dot.png");
        x = 100;
        y = Gdx.graphics.getHeight()/2 - dot.getHeight()/2;
        speed = 500;
        dotWidth = dot.getWidth();
        screenWidth = Gdx.graphics.getWidth();
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(0.2f, 0.4f, 0.8f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(dot, x, y);
        batch.end();
        if (x < 0) {
            speed = 500;
        }

        if (x > screenWidth - dotWidth) {
            speed = -500;
        }
        x += speed * Gdx.graphics.getDeltaTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人对可能造成这种情况有什么线索,我会全力以赴.

编辑:

所以这里有趣.这似乎只发生在窗口模式,而不是全屏模式.这也可能是它在移动设备上运行得更好的原因.也许这是一个错误呢?

DHa*_*DHa 2

在尝试了一些不同的方法(平均增量/平均原始增量/使用原始增量/将帧速率降低到 30/每帧使用一组增量)后,每个方法都出现相同的口吃,然后在窗口模式下谷歌搜索一些关于口吃的信息:

我想提出,卡顿不是由 LibGDX 本身引起的,而是窗口模式下发生的普遍问题,并且可能有许多不同的硬件相关原因。请参阅此处的示例和解释:https://gamedev.stackexchange.com/questions/47356/why-would-a-borderless-full-screen-window-stutter-occasionally