0

できる限りのことを試しましたが、私の libgdx アプリケーションは Android 2.2 でスケールダウンしません。わずか 480x320 の画面に 640x480 のフル イメージを表示します。これまでに取得したコードは次のとおりです。

private static final int VIRTUAL_WIDTH = 640;
private static final int VIRTUAL_HEIGHT = 480;
private static final float ASPECT_RATIO = (float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT;

public static Texture BMP_BACKGROUND;

public static Rectangle viewport;
public static OrthographicCamera camera;
public static SpriteBatch batch;

public void create()
{
  float w = Gdx.graphics.getWidth();
  float h = Gdx.graphics.getHeight();

  BMP_BACKGROUND = new Texture(Gdx.files.internal("data/bmpSpaceBackground.png"));
  BMP_BACKGROUND.setFilter(TextureFilter.Nearest, TextureFilter.Nearest);

  batch = new SpriteBatch();
  camera = new OrthographicCamera(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);
}

@Override
public void dispose()
{
  batch.dispose();
  BMP_BACKGROUND.dispose();
}

@Override
public void render()
{
  camera.update();
  camera.apply(Gdx.gl10);

  // set viewport
  Gdx.gl.glViewport((int) viewport.x, (int) viewport.y,
                    (int) viewport.width, (int) viewport.height);

  Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

  batch.draw(BMP_BACKGROUND, 0, 0);

  Game.run();
}

public void resize(int width, int height)
{
  float aspectRatio = (float)width/(float)height;
  float scale = 1f;
  Vector2 crop = new Vector2(0f, 0f);
  if(aspectRatio > ASPECT_RATIO)
  {
      scale = (float)height/(float)VIRTUAL_HEIGHT;
      crop.x = (width - VIRTUAL_WIDTH*scale)/2f;
  }
  else if(aspectRatio < ASPECT_RATIO)
  {
      scale = (float)width/(float)VIRTUAL_WIDTH;
      crop.y = (height - VIRTUAL_HEIGHT*scale)/2f;
  }
  else
  {
      scale = (float)width/(float)VIRTUAL_WIDTH;
  }

  float w = (float)VIRTUAL_WIDTH*scale;
  float h = (float)VIRTUAL_HEIGHT*scale;
  viewport = new Rectangle((int)crop.x, (int)crop.y, (int)w, (int)h);
}

誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1