Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: SDL_Surface ja värien vääristyminen

KoodiNoppa [10.11.2007 19:29:46]

#

kun erotan SDL_Surfacen pisteestä x värejä seuraavalla tavalla:

r=(color/(256*256))%256;
g=(color/256)%256;
b=color/%256;

ja piirrän samaan kohtaan,samalle SDL_Surfacelle samaa väriä:

((unsigned int*)surface->pixels)[x]=r*256*256+g*256+b;

saan pelkkää mustaa (värin ei pitäisi olla sitä). Joissain tapauksissa, kun muokkaan väriarvoja, pisteeseen x tulee väriä, mutta aivan vääränlaista. Alpha-arvot saattavat olla käytössä...Miten saan oikean värin kohtaan x?

Metabolix [10.11.2007 19:38:12]

#

Erota ja aseta takaisin ne alfatkin (samaan kaavaan yksi 256 lisää) tai aseta piirtäessä tuonne vielä | 0xff000000, jos haluat vain täysin läpinäkymätöntä.

KoodiNoppa [10.11.2007 20:10:24]

#

Näyttää toimivan. Mutta entä jos haluan muuttaa arvoja? Jos haluan esimerkiksi kertoa tai jakaa jonkin värin määrän? Tai lisätä tai vähentää sitä?

T.M. [10.11.2007 20:16:08]

#

nopeampi:

r = color >> 16;
g = (color >> 8) & 255;
b = color & 255;

jos alphat käytössä niin jotenkin tyyliin

r = (color >> 16) & 255;
g = (color >> 8) & 255;
b = color & 255;

KoodiNoppa [10.11.2007 20:49:25]

#

Ongelma ratkesi SDL_GetRGBA:lla ja SDL_MapRGBA:lla.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta