我是初学者,我想在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没有通过则从渲染调用返回自上次渲染调用以来。
答案 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次调用。至于实际实施,您应该使用Game
和Screens
。 Screen
接口已经有render
方法,可能如下所示:
public void render(deltaTime )
{
...
updateAllEntities(deltaTime);
...
renderAllEntities(deltaTime);
...
}
LibGDX只调用render
方法,但您可以像上面的示例一样自行拆分游戏逻辑更新和渲染。