Hej
Jeg er ved at lave en alpha blending rutine som kan blende 2
semitransparante billeder.. jeg fandt en formel som skulle kunne gøre dette
men jeg kan ikke rigtig få det til at virke..
for at blende har jeg prøvet med formlerne beskrevet på dette site:
http://graphics.stanford.edu/papers/merging-sig81/
Min kode ser ud som følger:
....
float Cout = 0;
float Aout = 0;
float Afgd = (float)((bg_pixels[i] >> 24) & 0xFF) / 255;
float Abkg = (float)((fg_pixels[i] >> 24) & 0xFF) / 255;
int Cfgd = bg_pixels[i] & 0xFFFFFF;
int Cbkg = fg_pixels[j] & 0xFFFFFF;
Aout = (1 - (1 - Afgd) * (1 - Abkg));
Cout = (Cfgd * Afgd) + (float)((1 - Afgd) * Cbkg * Abkg) / Aout;
// eller denne formel som giver samme resultat
Aout = Afgd + (1 - Afgd) * Abkg;
Cout = (Cfgd * Afgd) + (1 - Afgd) * (Cbkg * Abkg);
pixels[i] = (int)(Aout * 255) << 24 | (int)Cout;
Nogen som kan se hvad der går galt?