LibGDX中的deWiTTERS游戏循环

时间:2013-10-31 06:30:48

标签: android libgdx

我是初学者,我想在LibGDX中有一个完整的例子如何将帧速率限制为50或60.另外如何在游戏状态之间用简单的示例代码进行漫画插值 例如deWiTTERS游戏循环:

@Override
public void render()
{
    float deltaTime = Gdx.graphics.getDeltaTime();
    Update(deltaTime);
    Render(deltaTime);
}

有一个Gdx.graphics.setVsync()方法(generic = backend-independant),但它不存在于0.9.1中,仅存在于Nightlies中。

“依赖于vsync的固定时间步骤是一个非常糟糕的主意。它几乎可以打破所有硬件。

请参阅LwjglApplicationConfiguration,其中有一个标志,让我们使用切换gpu /软件vsynching。玩弄它。“(马里奥)

注意,这些都不会将帧速率限制为特定值...如果由于某种原因你真的需要限制帧率,你必须自己处理它,如果xxx ms没有通过则从渲染调用返回自上次渲染调用以来。

1 个答案:

答案 0 :(得分:5)

作为LibGDX的完整游戏引擎,它可以处理这样的事情。您可以在游戏开始时配置,至少使用最新的夜宵。

public static void main(String[] args) {
    LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
    cfg.title = "Example";
    cfg.useGL20 = false;
    cfg.width = 800;
    cfg.height = 480;
    cfg.vSyncEnabled = true;
    cfg.foregroundFPS = 60;

    new LwjglApplication(new ExampleGame(), cfg);
}

现在,您的渲染循环将限制为每秒60次调用。至于实际实施,您应该使用GameScreensScreen接口已经有render方法,可能如下所示:

public void render(deltaTime )
{
    ...
    updateAllEntities(deltaTime);
    ...
    renderAllEntities(deltaTime);
    ...
}

LibGDX只调用render方法,但您可以像上面的示例一样自行拆分游戏逻辑更新和渲染。