LibGDX - 我的图像不是填充屏幕的宽度和高度

时间:2014-09-02 01:43:52

标签: android libgdx

我在让图像填满整个屏幕而不伸展自己时遇到了问题。目前我有一个正交相机设置,但问题是屏幕中间的图像显示的原点(0,0)。我怎样才能做到这一点?这是我的代码。

public class GameScreen implements Screen {
   SlingshotSteve game; 

   public void Menu(SlingshotSteve game){
       this.game = game;
   }

   OrthographicCamera camera;

   SpriteBatch batch;
   TextureRegion backgroundTexture;
   Texture texture;

   GameScreen(final SlingshotSteve gam) {
        this.game = gam; 

    camera = new OrthographicCamera(800, 480);

    batch = new SpriteBatch();

    Texture texture = new Texture(Gdx.files.internal("background.jpg"));
    backgroundTexture = new TextureRegion(texture, 0, 0, 500, 500);

}

public void render(float delta) {   
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

      camera.update();
      batch.setProjectionMatrix(camera.combined);

      batch.begin();
      batch.draw(backgroundTexture, 0, 0, SlingshotSteve.WIDTH, SlingshotSteve.HEIGHT); 
      batch.end();

}

@Override
public void dispose() {
       batch.dispose();
       texture.dispose();

}

1 个答案:

答案 0 :(得分:0)

您的正射相机是如何实施的?听起来你可能对“像素完美”变换感兴趣,它允许屏幕坐标直接与世界坐标相关联。您可以使用以下参数来实现此转换。

final float lOrthoLeft   = 0;
final float lOrthoRight  = pScreenHeight;
final float lOrthoTop    = 0;
final float lOrthoBottom = pScreenWidth;
final float lOrthoNear   = Float.MIN_VALUE;
final float lOrthoFar    = Float.MAX_VALUE;

在这方面,您的正投影投影的lOrthoLeftlOrthoRightlOrthoToplOrthoBottom值可能是(-Width/2),{{ 1}},(+Width/2)(-Height/2) (或某些变体),以便将世界的原点定位在屏幕的中心。

但是,这也与libgdx如何呈现到屏幕有关。 OpenGL ES是libgdx引擎盖下的硬件加速图形API,它使用一个特殊的坐标系统,其中屏幕的中心用作原点。您会发现这些资源对于了解如何在这些域中工作非常有用。

libgdx co-ordinate system

Displaying Graphics with OpenGL ES