Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Esiste la funzione SDL_SetAlpha( , , ) ma imposta la trasparenza (in base al valore di alpha che si passa come parametro) su tutta la superficie che si passa come parametro, io vorrei sapere come poter settare il valore della trasparenza solo ad un determinato colore presente nell'immagine...
Non mi interessa sapere come impostare il colorKey, io voglio che per esempio in un'immagine solo il colore nero appaia pių trasparente, ma che si veda ancora...
spero di essere stato chiaro..
grazie in anticipo...
crea un'immagine di tipo RGBA a 32bit (8 bit per 4 canali).
Esegui un blit della tua JPG, dopodichč scansiona con un ciclo for tutti i pixel dell'immagine.
Fai il confronto con il colore che vuoi rendere trasparente, e ogni volta che lo trovi, setti il suo canale alpha al valore desiderato.
Per eseguire questa procedura sfrutta la funzione SDL_RGBA() e ricordati che per accedere ai singoli pixel devi fare una cosa simile:
Codice sorgente - presumibilmente C/C++
// Leggo il pixel in posizione (30, 40)
int x = 30;
int y = 40;
SDL_Surface* pImage = SDL_LoadImg("Ciao.jpg");
UInt8* pData = (UInt8 *)pImmagine->pixels;
UInt8 r, g, b;
pData += 3 * ( x + pImage->width * y );
r = pData[0];
g = pData[1];
b = pData[2];
// Confronto le componenti rgb con il colore di riferimento
// ...
// setto il valore di alpha al 25% (64) sull'immagine di destinazione