2013-08-28 26 views
7

現在、Libgdxライブラリを使用してゲームを行っていますが、現在は小さなハードルがあります。Libgdxウィンドウのサイズ変更:アスペクト比を維持する

現在、デスクトッププロジェクトのMain.javaクラスでサイズを変更する機能を無効にしました。

LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration(); 
    cfg.resizable = false; 

アスペクト比を維持しながらウィンドウのサイズを変更する簡単な方法があるかどうかは疑問です。 (シフト+リサイズのように)

私のオプションは何ですか? :)

答えて

2

この機能は、あなたのアスペクト比、またはあなたが思うものの何かを維持する能力を与えるものではありません。デスクトップアプリケーションで画面のサイズを変更するためにpossebiltyを無効にするだけです。

libGDX wiki特にScene2Dページをご覧ください。 ビューポートのステージからのものを見てください。現在のlibGDXでアスペクト比をどのように保つかが説明されています。仮想解像度と画面のサイズ変更方法の助けを借りて別の方法を説明するチュートリアルがあります。それは時代遅れだ!ウィキ

から

この例では、glViewportを使用して、今回のいずれか 側の「黒いバー」と固定ステージサイズを使用します。最初に、800x480のステージサイズは、Scalingクラスを使用して画面サイズに合わせて調整された です。結果は、 は、OpenGLが使用する画面のどの部分を変更するか、glViewportの設定に使用されます。最後に、setViewportにはビューポート位置 とsizeが渡されます。結果は最後の例と同じですが、ステージにはアスペクト比を維持するために必要な場合には "黒いバー"がありますが、描画は がビューポートの外で発生することはありません。

public void resize (int width, int height) { 
     Vector2 size = Scaling.fit.apply(800, 480, width, height); 
     int viewportX = (int)(width - size.x)/2; 
     int viewportY = (int)(height - size.y)/2; 
     int viewportWidth = (int)size.x; 
     int viewportHeight = (int)size.y; 
     Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight); 
     stage.setViewport(800, 480, true, viewportX, viewportY, viewportWidth, viewportHeight); 
} 

よろしく

関連する問題