2013-07-15 14 views
7

Ho diversi oggetti con trame diverse per stati diversi, quindi sto usando uno TextureAtlas creato con TexturePacker e ridimensionando lo TextureRegion dove mi serve. Devo ridimensionare perché non sto solo provando a supportare sia 720p che 1080p, ma alcuni dei miei oggetti sono piastrelle o cursori che si ridimensionano in base alla larghezza e all'altezza della tavola, dato che possono cambiare nel mio gioco mentre la tavola sarà sempre occupare la stessa percentuale dello schermo.LibGDX: filtraggio di una texture in scala

Con un Texture, posso solo fare questo:

texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

Tuttavia, quando sto usando un TextureRegion non v'è alcuna opzione per impostare un filtro. Ciò si traduce in questi ridimensionamento di TextureRegion come nitidi, a blocchi e frastagliati. Non è un gradevole ridimensionamento e non sembra affatto anti-alias.

Questo è piuttosto frustrante, perché sono abbastanza cattivo nel realizzare grafica e ora anche quando mi piace quello che ho fatto sembra schifoso. Cosa devo fare per replicare l'effetto di TextureFilter.Linear utilizzando uno TextureRegion anziché uno Texture?

risposta

13

È possibile aprire il file .atlas e modificare il valore filter in Linear, Linear. Oppure puoi utilizzare region.getTexture() per accedere alla Texture a cui appartiene la regione, quindi chiamare lo setFilter(...) su quello.

+0

Per evitare di cambiare manualmente il file .altas ogni volta che imballiamo le immagini possiamo usare questo: https://github.com/libgdx/libgdx/wiki/Texture-packer# configurazione –

0

Se si imballaggio utilizzando GDX-tools poi si deve impostare l'opzione

Settings settings = new Settings(); 
    settings.paddingX = 2; 
    settings.paddingY = 2; 
    settings.minWidth = 32; 
    settings.minHeight = 32; 
    settings.maxHeight = 1024; 
    settings.maxWidth = 1024; 
    settings.stripWhitespaceX = true; 
    settings.stripWhitespaceY = true; 
    settings.filterMag = TextureFilter.Nearest; 
    settings.filterMin = TextureFilter.Nearest; 
    settings.flattenPaths = true; 

    TexturePacker2.process(settings, "input directory", "output directory","packName"); 

    System.out.println("PackTextures->main finished."); 

o se si sta utilizzando tessitura-packer-gui.jar quindi spuntare la casella di controllo lineare (min) e lineare (max) e sei a posto ...

Problemi correlati