Domanda

Löve2D per la scrittura di un piccolo gioco. Löve2D è un motore di gioco open source per Lua. Il problema che sto incontrando è che alcuni filtri antialias viene applicato automaticamente ai vostri sprites quando si disegna in posizioni non interi.

love.graphics.draw( sprite, x, y )

Così quando xoy non è rotondo (ad esempio, x = 100.24), lo sprite appare sfocata. Lo stesso accade quando la dimensione sprite non è nemmeno, perché (x, y) indica il centro dello sprite. Ad esempio, uno sprite che è 31x30 grande apparirà sfocata di nuovo, perché i suoi pixel sono dipinte in posizioni non interi.

Dato che sto usando pixel art, voglio evitare tutto questo il modo in cui, in caso contrario l'arte viene distrutta da questo effetto. La soluzione sto utilizzando finora è quello di forzare le coordinate per essere rotondo da sporcare il codice con le chiamate a Math.floor (), e costringendo tutti gli sprite avere anche le dimensioni aggiungendo una riga o una colonna di pixel trasparenti con il programma di disegno , se necessario.

C'è qualche comando per disattivare l'antialiasing posso chiamare all'avvio del programma?

È stato utile?

Soluzione 3

Nel caso in cui qualcuno è interessato, Ho chiesto in altri posti e ho scoperto che quello che sto chiedendo è già richiesto come caratteristica: http://love2d.org/forum/tracker.php?p=2&t=7

Quindi, la versione corrente di amore che sto usando (0.5.0) ancora non permette di disattivare il filtro antialias, ma la funzione è già nella versione SVN del motore.

Altri suggerimenti

Se si spegne l'anti-aliasing sarà solo ottenere aliasing, da qui il nome! Perché si sta disegnando in posizioni non integrali, e che cosa si vuole fare su quelle parti frazionarie? (Intorno a loro al valore più vicino? Tronca loro? Che dire se sono negativi?)

Personalmente vorrei lasciare la grafica di basso livello da solo e modificare il codice per utilizzare funzioni di accesso per X e Y che eseguono l'arrotondamento o troncamento che si richiedono. Questo garantisce il vostro pixel art finisce disegnato su confini interi mantenendo l'anti-aliasing che potrebbe essere necessario in seguito.

Un altro possibile aggirare potrebbe essere quella di utilizzare Math.floor () per arrotondare i vostri numeri interi come una soluzione a basso costo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top