即使是最简单的项目也会口吃



我制作了一个小"游戏"来测试我在实际游戏中注意到的一些口吃问题,但我无法弄清楚为什么会发生这种情况。我做了一个尽可能简单的项目来测试这一点,但我仍然有很严重的口吃。FPS仍然是60,但每隔几秒,有时更长,游戏就会出现卡顿。

我在手机和高端pc上都试过,奇怪的是,在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();
    }
}

如果有人知道是什么导致了这种情况,我洗耳恭听。

编辑:

有趣的是。这似乎只发生在窗口模式,而不是在全屏。这或许也是为什么它在手机上效果更好的原因。也许这是一个bug ?

在尝试了一些不同的方法(平均delta/平均原始delta/使用原始delta/将帧率降低到30/每帧使用一个设置的delta)之后,每个都得到了相同的口吃,然后在窗口模式下搜索一些口吃:

我想提出口吃不是由LibGDX本身引起的,而是在窗口模式下发生的一般问题,并且可能有许多不同的硬件附近原因。这里有一个示例和解释:https://gamedev.stackexchange.com/questions/47356/why-would-a-borderless-full-screen-window-stutter-occasionally

相关内容

最新更新