2015-01-29 12 views
5

Sto lavorando a un progetto in C++ utilizzando SDL (Simple Directmedia Layer) ma quando disegno uno SDL_Texture sullo schermo è sfocato anche se non è ridimensionato.SDL disegna immagini sfocate senza ridimensionare

Come l'immagine viene caricata:

SDL_Surface* loadedSurface = IMG_Load("image.png"); 
SDL_Texture* gImage = SDL_CreateTextureFromSurface(gRenderer, loadedSurface); 

Come l'immagine viene disegnata sullo schermo:

SDL_Rect renderQuad = { x, y, width, height }; 
SDL_RenderCopy(gRenderer, gImage , NULL, &renderQuad); 

vedi immagine, a sinistra è nel programma e destra è l'originale:

enter image description here

C'è un parametro che è stato dimenticato di impostare? Ed è normale che SDL faccia questo?

Sto utilizzando SDL 2.0 a 32 bit su un computer Windows 8.1 a 64 bit.

+0

Sembra che l'immagine è stata antialias. –

+0

Forse è a causa del suggerimento sulla qualità della scala di rendering. Maggiori informazioni qui: http://forums.libsdl.org/viewtopic.php?t=9500 – fmcato

+0

Stai usando le funzioni 'SDL_GL_ *' in qualsiasi parte del tuo codice? –

risposta

1

avanti rispetto alla chiamata al SDL_CreateTextureFromSurface prova a chiamare:

SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "0"); 

Secondo SDL Wiki questo dovrebbe influenzare il modo le chiamate SDL_CreateTextureFromSurface interpolare la superficie. "0" dovrebbe risultare nel vicino più vicino rimuovendo l'effetto sfocato che stai vedendo.

+0

Già provato, non cambia nulla. Probabilmente perché le trame non sono ridimensionate. Cambiarlo su un altro valore non cambia nulla. – Oli414

-1

So che questo potrebbe essere troppo tardi, ma si può ottenere senza sfocature con

SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest");

Questo funziona, ho provato

Problemi correlati