2013-10-03 20 views
5

Ho problemi con l'allungamento degli sprite in LibGDX.Scaling di LibGDX Grafica 2d

Ho un file PNG per il cielo nel gioco (1x1000 px) e voglio farlo 1000x1000px

sprite.setSize(pixelWidth,pixelHeight); 

Edit: Qui è l'immagine che voglio allungare - sky. Ha una leggera sfumatura dall'alto verso il basso, come puoi vedere. Voglio renderlo 1000px in larghezza. Mi aspetto un'immagine che abbia cambiato colore nella larghezza.

ma ottengo questo strano risultato: Image Image

Si può vedere che c'è qualcosa di simile a gradiente di larghezza, anche con le linee, ma senza ragione, perché io sono una scalatura delle immagini 1px ...

La cosa strana è che tutto sembra a posto su altri PC e telefoni cellulari ... Ma non credo che il problema sia nel mio PC !?

Non so cosa provare ... Qualche idea?

Scusate se non ho spiegato molto bene .. e dispiace per il mio cattivo inglese

finale: E 'stato dal filtraggio. Ho cambiato il filtro da lineare a più vicino e tutto è andato bene

+0

Dovete dirci che il il problema è! In realtà, puoi vedere le differenze di colore? Se è quella che prende una texture a risoluzione maggiore. E potrebbe essere, che è solo il tuo monitor che non mostra abbastanza colori per un buon risultato. – BennX

+0

Siamo spiacenti. Ho modificato l'argomento. Il mio monitor è Acer AL511 – user2842461

risposta

2

Non capisco che cosa il vostro domanda davvero non è che un buon modo per scalare uno sprite è come questo

sprite.setSize(scrw * 0.16f, scrw * 0.16f); 

qui SCRW è larghezza della finestra

0

Penso che questo stia accadendo solo a causa dell'interpolazione. Quando il tuo sprite e la tua area afferrata della texture hanno una larghezza di 1 px e stai ridimensionando lo sprite alla larghezza dello schermo, la GPU interpolerà alcuni valori di colore e utilizzerà i colori del pixel nelle vicinanze nella texture.

Si potrebbe provare a modificare la sfumatura su una trama larga 3px e afferrare lo sprite largo 1px fuori dal centro del 3 px. La GPU continuerà a interpolare i colori e ad usare pixelcolors del quartiere, ma dato che saranno uguali, sembrerà a posto.

Ecco un'immagine come il vostro textureregion probabilmente si presenta come in questo momento e la sua area afferrare, e seguendo il textureregion come dovrebbe essere simile e la sua area afferrando:

enter image description here