Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to scale sprites in libgdx according to screen resolutions?

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? 

like image 940
Z0q Avatar asked Dec 28 '15 16:12

Z0q


1 Answers

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

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

like image 159
Z0q Avatar answered Oct 05 '22 18:10

Z0q