35

私は 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の参照を問題にします。

ありがとう!

4

8 に答える 8

1
GraphicsDevice monitors[]=GraphicsEnvironment.getScreenDevices(); 

Dimension screen_resolution[monitors.length];

for (int monitorID = 0; monitorID < monitors.length; monitorID++)
{
    screen_resolution[monitorID] = new Dimension(monitors[monitorID].getDisplyMode().getWidth(),monitors[monitorID].getDisplyMode().getHeight());
}
于 2013-08-31T19:52:21.193 に答える
0

おそらく、現在使用しているモニターの寸法を取得するため、さまざまなサイズのモニターで寸法を取得するだけです。異なるサイズのモニターでは、異なる操作を行う必要がある場合があります。

背景画像は、他の画面でまだ動作していると考えているため、拡大されている可能性があります。

glではないにしても、これが役立つことを願っています

于 2013-09-09T21:46:21.720 に答える
0

ここ

http://www.lwjgl.org/wiki/index.php?title=LWJGL_Basics_5_%28全画面表示%29

デスクトップに適した全画面表示モードを選択するための lwjgl の便利な方法があります。同じ方法を使用して解像度も決定し、後で gl ops に使用できます。

于 2014-03-18T06:17:54.447 に答える
-2

Toolkit.getDefaultToolkit() の使用を控え、lwjgl.util.Display.getAvailableDisplayModes() または libgdx で説明されているメソッドのみを使用します。

フルスクリーン ウィンドウをセットアップしたら、そのサイズを取得し (セットアップ メソッドがまだそれを認識していない場合)、この情報のみを使用します。

Display.getAvailableDisplayModes() が異なる実行でソート順を変更する場合は、それらを再ソートして利用可能な最大のものを使用するか、標準のものを使用してゲーム内設定を提供してそれらを変更します。

于 2014-04-23T12:47:30.773 に答える