私は libGDX (LWJGL 上のライブラリ) ゲーム プロジェクトに取り組んでおり、いくつかの異なるワークステーションから Intellij IDEA IDE を使用しています。
- 2 つのディスプレイ (1920x1080 および 1600x1200) を備えた Windows 7 x64 ラップトップ、nVidia GT540M。
- シングル ディスプレイ (1366x768)、Intel 統合グラフィックスを搭載したラップトップ上の Ubuntu 12.04 LTS。
- 2 つのディスプレイ (1920x1080 および 1280x1024)、nVidia GTS 450 を備えたデスクトップ上の Ubuntu 12.04 LTS。
Ubuntu ボックスでは OpenJDK for Java 6 を使用し、Windows ボックスでは Sun/Oracle Java 6 を使用しています (Java 6 は Android との互換性のために使用するものだと聞きました)。
フルスクリーンで実行する場合:
- Windows 7 ラップトップ: 正常に動作します。
- Ubuntu ラップトップ: 正常に動作します。
- Ubuntu デスクトップ: 背景画像が拡大表示され、一部しか画面に収まりません。+
これをさらに調べてみると、Gdx.graphics.getHeight() と Gdx.graphics.getWidth() の呼び出しが、両方のディスプレイをカバーするために必要な四角形のサイズ (私の場合は 3200x1080) を返すことがわかりますが、ゲームにフルスクリーンで実行すると、ディスプレイの 1 つだけを使用するため、カメラは 1920x1080 に設定されますが、カメラの動きとタイル マップのパンニングは、3200x1080 で動作すると見なし、物事が歪んで使用できなくなります (キャラクターが立ち去る可能性があるため)画面の右側)。
私の問題は実際には awt.Toolkit の getScreenSize() 呼び出しによって返されるサイズに起因すると推測していますが、全画面表示にしたときに実際に使用される画面のサイズを取得するために、より深く問い合わせる方法がわかりません。
My DesktopStarter は画面サイズを取得し、フルスクリーンを次のように設定します。
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
cfg.width = screenDimension.width;
cfg.height = screenDimension.height;
cfg.fullscreen = true;
new LwjglApplication(new Game1(), cfg);
「フルスクリーン」が実際に起動するディスプレイの高さ/幅を取得する回避策はありますか?
だから私が見ている問題は、game.jarファイルを実行し、ゲームを終了してから再度実行すると、Gdx.graphics.getDisplayModes()によって返されるモードのリストに異なる表示モードが表示されることです- PT が以下で指摘したように、これは LWJGL の薄いラッパーDisplay.getAvailableDisplayModes()
です。なぜこうなった?Ubuntu での後続の実行で表示されるモードのセットが異なるのはなぜですか?
編集:PTの提案に従って、表示モードのリストを提供しているのはLWJGLのように見えるため、LWJGLの参照を問題にします。
ありがとう!