2015-12-28 39 views
13

Sto provando a ridimensionare la trama per adattarla alla larghezza dello schermo. Questo è quello che ho provato, ma semplicemente ripete la texture. Non lo scala.Come ridimensionare gli sprite in libgdx in base alle risoluzioni dello schermo?

Nel metodo init:

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); 

Nel metodo di rendering:

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(); 

Qualcuno ha un'idea di che cosa sto facendo male?

+0

Sembra che si sta utilizzando immaginari unità "pixel", leggere questo: http://blog.xoppa.com/pixels – Xoppa

+0

Perché è così complicato? – Z0q

+0

Che cosa è complicato? – Xoppa

risposta

2

Apparentemente questo è successo perché stavo usando mipmaps. Senza mipmapping, gli sprite si adattano in modo appropriato.

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