2013-02-11 15 views
7

Sto iniziando a imparare C# e XNA e voglio visualizzare uno sprite animato (spostato dalla mia tastiera).Lo sprite diventa sfocato

Ho questo file di sprite:

basic sprite

Per visualizzare solo la parte che ho bisogno, io uso questo codice:

Rectangle cuttedSprite = new Rectangle(
    this.W * (int)this.mCurSprite.X, 
    this.H * (int)this.mCurSprite.Y, 
    this.W, 
    this.H 
); 
spriteBatch.Draw(this.mSpriteTexture, this.mPosition, cuttedSprite, Color.White); 

Ma il mio problema è che la resa l'immagine è sfocata dopo lo spostamento:

blur problem

Ho provato a risolvere questo problema modificando il SamplerStates, ma non è cambiato nulla. Qualcuno ha un'idea per aiutarmi?

+3

Si prega di provare con un 'SamplerState.PointWrap'. Inoltre, poiché 'mPosition' è probabilmente un' Vector2', prova ad arrotondare 'mPosition.X' e' mPosition.Y' ai numeri interi più vicini. – Lucius

+1

Avevi ragione! Ho provato a visualizzare la mia immagine senza pixel interi quando mi muovo in diagonale ... Ok, invia questa risposta e io la convalida! – PoulsQ

risposta

5

Arrotonda la posizione dello sprite agli interi più vicini.

Se il rettangolo di destinazione dello sprite è sfalsato di meno di un pixel, il campionatore nello shader di pixel calcolerà il colore interpolando tra i pixel adiacenti.

Un'altra opzione sta modificando il numero filter method del campionatore con l'interpolazione più vicina. È possibile farlo specificando uno SamplerState.PointWrap o SamplerState.PointClamp quando si chiama .

+1

A seconda di come gestite le cose, potreste voler eseguire l'arrotondamento solo a scopo di rendering. Se si sta utilizzando la fisica, ad esempio, si desidera lasciare le coordinate precise nel risolutore, altrimenti tenterà di correggerle ripetutamente, quindi arrotonderà solo la chiamata effettiva. – ssube

0

Il più facile è gettata a (int) position.x e (int) Position.Y quando il tasto viene rilasciato il movimento

+0

Alla domanda è stato risposto quasi un anno fa, non c'è bisogno di urlare a meno che non ci sia qualcosa di nuovo da aggiungere – Leeor

Problemi correlati