4

私は初心者で、フレームレートを 50 または 60 に制限する方法の LibGDX の完全な例が必要です。

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

Gdx.graphics.setVsync() メソッド (ジェネリック = バックエンドに依存しない) がありますが、0.9.1 には存在せず、Nightlies にのみ存在します。

「固定時間ステップを vsync に依存することは、本当に悪い考えです。ほとんどすべてのハードウェアで壊れます。

LwjglApplicationConfiguration を参照してください。gpu/ソフトウェア vsynching の切り替えを使用できるようにするフラグがあります。遊んでね」(マリオ)

これらのいずれもフレームレートを特定の値に制限しないことに注意してください...何らかの理由でフレームレートを本当に制限する必要がある場合は、最後の呼び出しから xxx ミリ秒が経過していない場合は、レンダリング呼び出しから戻って自分で処理する必要があります呼び出しをレンダリングします。

4

1 に答える 1

6

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);
}

これで、レンダー ループは 1 秒あたり 60 回の呼び出しに制限されます。実際の実装に関しては、 と を使用する必要がGameありScreensます。インターフェイスには、次のようなメソッドがScreen既にあります。render

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

LibGDX によって呼び出されるメソッドのみがありrenderますが、上記の例のように、ゲーム ロジックの更新とレンダリングを自分で分割できます。

于 2013-10-31T06:44:02.543 に答える