我是初学者,我想在LibGDX中有一个完整的例子如何将帧速率限制为50或60.另外如何在游戏状态与简单示例代码之间进行漫画插值,例如deWiTTERS Game Loop:
@Override
public void render()
{
float deltaTime = Gdx.graphics.getDeltaTime();
Update(deltaTime);
Render(deltaTime);
}
Run Code Online (Sandbox Code Playgroud)
有一个Gdx.graphics.setVsync()方法(generic = backend-independant),但它不存在于0.9.1中,仅存在于Nightlies中.
"依赖于vsync的固定时间步骤是一个非常糟糕的主意.它将打破几乎所有的硬件.
请参阅LwjglApplicationConfiguration,其中有一个标志,让我们使用切换gpu /软件vsynching.玩弄它."(马里奥)
请注意,这些都不会将帧速率限制为特定值...如果由于某种原因您真的需要限制帧速率,则必须通过从渲染调用返回来自己处理它,如果xxx ms自上次没有通过渲染电话.
作为LibGDX的完整游戏引擎,它处理这样的事情本身.您可以在游戏开始时配置此功能,至少使用最新的nightlies.
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);
}
Run Code Online (Sandbox Code Playgroud)
现在,渲染循环将限制为每秒60次调用.至于实际的实现,你应该使用Game和Screens.该Screen接口已经有一个render方法,可能如下所示:
public void render(deltaTime )
{
...
updateAllEntities(deltaTime);
...
renderAllEntities(deltaTime);
...
}
Run Code Online (Sandbox Code Playgroud)
只有renderLibGDX调用的方法,但您可以像上面的示例一样自行拆分游戏逻辑更新和渲染.
| 归档时间: |
|
| 查看次数: |
3176 次 |
| 最近记录: |