16

I am trying to scale the texture to fit the screen width. This is what I tried, but it simply repeats the texture. It does not scale it.

In the init method:

TextureLoader.TextureParameter param = new TextureLoader.TextureParameter();
param.minFilter = Texture.TextureFilter.MipMapLinearLinear;
param.genMipMaps = true;
param.wrapU = Texture.TextureWrap.ClampToEdge;
param.wrapV = Texture.TextureWrap.ClampToEdge;
manager.load("textures/texture.png", Texture.class, param);

In the render method:

Texture tex = manager.get("textures/texture.png", Texture.class);
float scale = (float)( (float)Gdx.graphics.getWidth() / (float)(tex.getWidth()));

batch.begin();
Sprite s = new Sprite(tex, 0,0,tex.getWidth(),tex.getHeight());

s.setPosition(0, 0);
s.setOriginCenter();
//s.setScale(scale);
s.setSize(Gdx.graphics.getWidth(), scale * tex.getHeight());
s.setOrigin(0,0);
s.draw(batch);
batch.end();

Does anyone have an idea what I am doing wrong? 

Morgoth
  • 4,935
  • 8
  • 40
  • 66
Z0q
  • 1,689
  • 3
  • 28
  • 57
  • Looks like you are using imaginary "pixel" units, read this: http://blog.xoppa.com/pixels – Xoppa Dec 28 '15 at 17:25
  • Why is this so complicated? – Z0q Dec 28 '15 at 18:18
  • What is complicated? – Xoppa Dec 28 '15 at 18:28
  • Well, do I need to create a separate camera or viewport? Why isn't there a simple function like setScale() in libgdx? I mean, 3D objects simply scale the way I want, but 2D seems to make it bloated. I find the article difficult to understand too. – Z0q Dec 28 '15 at 19:01
  • @Z0q there is nothing complicated about `camera` and/or `Viewport`s. Once you understood them they can make many things a lot easier. One thing you always have to remember: You DON'T want to use pixels. Devices have different resolutions and you really don't want to have a resolution-dependent game, especially not, when you are developing for android devices! So read the `camera`/`viewport` tutorials and you will see it's advantage – Robert P Dec 30 '15 at 08:17
  • @Springrbua Could you please provide an example solution for my case? I think StretchViewport would suit my needs. But I can't seem to get it working. Thanks – Z0q Dec 30 '15 at 12:59

1 Answers1

2

Apparently this happened because I was using mipmaps. Without mipmapping, the sprites scale appropriately.

param.minFilter = Texture.TextureFilter.MipMapLinearLinear;
param.genMipMaps = true;

Z0q
  • 1,689
  • 3
  • 28
  • 57