Delta时间在游戏引擎中无法正常工作-LWJGL

时间:2019-04-14 16:22:14

标签: java lwjgl

我正在尝试制作一个简单的游戏引擎,并试图向用户提供增量时间。这是它的计算方式并提供给用户(他们以浮点数的形式获得):

float deltaTime;
long lastLoop = System.nanoTime();
UpdateInfo updateInfo = new UpdateInfo(0, 0, gameInstance.window.getWindowHandle());

while (!glfwWindowShouldClose(gameInstance.window.getWindowHandle()))
{
    deltaTime = (float)((System.nanoTime() - lastLoop) / 1000000f);
    updateInfo.setDeltaTime(deltaTime);

    if (gameInstance.window.isFPSCounterEnabled())
    {
        if (System.currentTimeMillis() - lastFrameCount >= 1000)
        {
            fps = frames;
            frames = 0;
            lastFrameCount = System.currentTimeMillis();
        }
    }
    else
    {
        fps = -1;
    }

    updateInfo.setFPS(fps);
    gameInstance.updateGame(updateInfo);
    gameInstance.drawGame(gameInstance.window.getDrawboard());
    lastLoop = System.nanoTime();
    glfwPollEvents();
}

但是当我在屏幕上移动精灵时测试增量时间值时,它确实很不稳定。这是启用和禁用VSync的情况。我算错了还是我的游戏不稳定?

0 个答案:

没有答案