Android LibGDX中的德维特博弈循环

Android LibGDX中的德维特博弈循环,android,libgdx,Android,Libgdx,我是一个初学者,我想要一个完整的例子在LibGDX如何限制帧速率为50或60。还有如何用简单的例子代码在游戏状态之间进行插值 e、 g.德维特游戏循环: @Override public void render() { float deltaTime = Gdx.graphics.getDeltaTime(); Update(deltaTime); Render(deltaTime); } 有一个Gdx.graphics.setVsync()方法(generic=bac

我是一个初学者,我想要一个完整的例子在LibGDX如何限制帧速率为50或60。还有如何用简单的例子代码在游戏状态之间进行插值 e、 g.德维特游戏循环:

@Override
public void render()
{
    float deltaTime = Gdx.graphics.getDeltaTime();
    Update(deltaTime);
    Render(deltaTime);
}
有一个Gdx.graphics.setVsync()方法(generic=backend independent),但它不在0.9.1中,只在夜间出现

“依靠vsync实现固定的时间步长是一个非常糟糕的主意。它几乎会在所有硬件上崩溃

请参阅LwjglApplicationConfiguration,其中有一个标志,允许我们使用切换gpu/软件vsynching。请使用它。”(Mario)


请注意,这些都没有将帧速率限制为特定值。。。如果出于某种原因确实需要限制帧速率,那么如果上次渲染调用后xxx ms没有通过,则必须通过从渲染调用返回来自行处理

作为一个完整的游戏引擎,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次调用。至于实际实现,您应该使用
游戏
屏幕
屏幕
界面已经有一个
呈现
方法,该方法可能如下所示:

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

LibGDX只调用
render
方法,但是你可以像上面的例子那样分割你的游戏逻辑更新和渲染自己。

好的,告诉我在AndroidApplicationConfiguration的情况下,我怎样才能实现相同的配置。@jay_singh看了看,它在开始设置所有项目时为你节省了很多时间,而且很容易扩展。Android配置的工作原理正是如此same@jay_singh哦,我刚刚注意到您无法通过AndroidAppConfig配置它。我猜这是因为智能手机对FPS有内部限制(为了节约能源)。例如,我的Google Nexus S在60 fps时自动停止。在我看来,这种方法没有使用deWitters游戏循环,因为没有插值。相反,更新和渲染都设置为60fps。这是对的吗?@twiz是的,你是对的。但在大多数情况下,你并不需要一个真正的德维特游戏循环。如果你这样做了,它仍然可以在libgdx游戏循环中实现?或者至少是比0.9.1更新的版本?事实上,夜间睡眠是相当稳定的。