Comprendere come creare / utilizzare le trame per i giochi se limitato da una potenza di due dimensioni


8

Ho alcune domande sulla creazione di grafica per un gioco.

Come esempio. Voglio creare una moto. (1 pixel = 1 centimetro) Quindi la mia moto avrà 200 larghezze e 150 altezze. (200x150) Ma libgdx consente solo di caricare dimensioni con la potenza di 2 ?! (2,4,8,16, ...)

Prima ho pensato a quello. Creerò la mia bici con le dimensioni (200x150) e la salverò come png. Quindi lo riaprirò (ad es. Con gimp) ridimensionando l'immagine ad una dimensione che utilizza valori con potenza di 2 (128x128). Lo caricherò come texture nel programma e imposterò larghezza come 200 e altezza come 150.

Ma non sarebbe un problema? Perché perderò alcune informazioni sui pixel quando faccio la prima conversazione.?! No?


1
Libgdx ha un packer di texture che combina le tue immagini con alcune immagini più grandi (atlanti) e ti aiuta a disegnare solo la parte desiderata.
Matsemann,

Risposte:


11

Il motivo per cui sei limitato a una potenza di due dimensioni è dovuto al funzionamento della ram video. Tieni presente che ciò che dovresti fare è in genere rendere l'immagine la potenza successiva successiva di due (.e. 512x256), quindi utilizzare solo una parte di tale immagine per la grafica. Dovresti impostare le tue coordinate UV per utilizzare solo una sottosezione dell'immagine su qualsiasi triangolo che stai rappresentando.

Se sei preoccupato per l'utilizzo della memoria, puoi anche usare parte di quello rimasto sullo spazio su oggetti diversi e mappare gli oggetti UV su quella parte della trama. Realizzare una trama come questa è anche noto come un "atlante".


4
Vale la pena ricordare che gli atlanti ottimizzano anche le prestazioni, perché meno si cambia trama, meno lotti, disegno più veloce.
Gustavo Maciel,

3

È necessario utilizzare le coordinate della trama anziché ridimensionare, come disegnare solo una parte dell'intera trama. Non so come funziona in libgdx ma è comune usare questo approccio. Un altro approccio consiste nell'utilizzare l'atlante delle trame, che hai in memoria ad es. 1024x1024 e quindi quando carichi l'immagine, la carichi nel rettangolo dell'atlante.


0

Puoi convertire la dimensione della tua immagine un po 'più grande o più piccola in base alla dimensione appropriata. Avevo usato questo link - http://www.garyshood.com/imageconvert/ È possibile utilizzare una dimensione che sarebbe completamente divisibile per 2. Ad esempio, se la dimensione dell'immagine è 200, quindi 200/2 = 100; 100 / 2 = 50; 50/2 = 25, quindi qui 25 non è divisibile per 2. Pertanto, 200 non è una dimensione appropriata. Puoi usare 1024, 512, 256, 128 e così via .. E poi puoi usare porzioni di quell'immagine nella tua grafica. L'altra alternativa sarebbe quella di combinare facilmente tutte le tue trame nell'atlante delle trame usando la GUI di Libgdx Texture Packer e quindi usando le trame di quell'atlante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.