2012-03-27 19 views
5

Android用ゲームをlibgdxで作成する方法があれば、すべて同じ解像度の480x800を共有できるのかなと思いました。 Gdx.graphics.setDisplayMode(480,800、true)を使用しても何も変更されていないようです。 OrthographicCameraを480で作成すると、ゲームは480 x 800になりますが、フルスクリーンにズームしたり、望みどおりに画面全体を占めたりすることはありません。私はそれを私の電話で試してみましたが、480x800の解像度でゲームの残りの部分を埋めるために空きスペースを使いました。ここで私が使用しているコードです。Android用libgdx用のフルスクリーン解像度

public class GameScreen implements Screen { 

private Game game; 
private OrthographicCamera guiCam; 
private SpriteBatch batch; 
private Texture texture; 
private Rectangle glViewport; 

public GameScreen (Game game) 
{ 
     this.game = game; 
     guiCam = new OrthographicCamera(GAME_WIDTH, GAME_HEIGHT); 
     guiCam.position.set(GAME_WIDTH/2, GAME_HEIGHT/2, 0); 
     batch = new SpriteBatch(); 
     texture = new Texture(Gdx.files.internal("data/c2.png")); 
     glViewport = new Rectangle(0, 0, GAME_WIDTH, GAME_HEIGHT); 
} 

@Override 
public void render(float delta) { 
    if (Gdx.input.justTouched()) { 
      texture = new Texture(Gdx.files.internal("data/c1.png")); 
    } 
    GL10 gl = Gdx.graphics.getGL10(); 
    gl.glClearColor(1, 0, 0, 1); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
    gl.glViewport((int) glViewport.x, (int) glViewport.y, 
      (int) glViewport.width, (int) glViewport.height); 

    guiCam.update(); 
    guiCam.apply(gl); 
    batch.setProjectionMatrix(guiCam.combined); 
    batch.begin(); 
    batch.draw(texture, 0, 0, 0, 0, 142, 192); 
    batch.end(); 
} 

private static final int GAME_WIDTH = 480; 
private static final int GAME_HEIGHT = 800; 
} 

ありがとうございます。

答えて

10

あなたはglViewportを480x800に設定しました。つまり、電話機のハードウェアに描画する480x800のウィンドウを要求しています。ほとんどの(すべての)携帯電話のハードウェアは(デスクトップモニタのように)画面の拡大縮小を行わないため、画面上に480x800の領域しか表示されません。

OpenGLで画面をズームする必要があります。その場合、glViewport()をデバイスの物理解像度(モジュロアスペクト比の警告!)に設定してください。あなたは好きな「仮想」解像度(この場合は480x800)でカメラを放置する必要があります。これで、OpenGLはすべてのプリミティブを画面の解像度まで拡大します。

簡単なテストとして、これを試してみてください。

gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

次の問題は、ハードウェアのアスペクト比は、あなたの「仮想」のアスペクト比と一致しない場合。その場合は、ストレッチ、片側に黒いバーを残すか、仮想アスペクト比を変更するかを決める必要があります。カメラ/ビューポートの設定、およびアスペクト比の問題の解決策の詳細については、このブログの記事を参照してください。http://blog.acamara.es/2012/02/05/keep-screen-aspect-ratio-with-different-resolutions-using-libgdx/

+0

ありがとう、これは本当に役に立ちました。 – MasterBirdy

関連する問題