CLE DE COULEUR


Dans le but de pouvoir afficher des objets graphiques (sprites), il va falloir definir une couleur transparente.
Cette couleur n'est pas ecrite dans le buffer de destination ce qui permet de creer cette transparence
EN COURS DE CONSTRUCTION


 

Type Description Valeur
DDPIXELFORMAT

Objet permettant d'obtenir le format de pixels

dwRGBBitCount: Nombre de bit par pixel
dwRBitMask: Masque de bits pour les bits rouge
dwGBitMask Masque de bits pour les bits vert:
dwBBitMask: Masque de bits pour les bits bleu
dwAlphaBitDepth: Masque de bits pour les bits alpha
DDCOLORKEY Objet de type cle couleur dwColorSpaceLowValue: Valeur minimum de la cle couleur
dwColorSpaceHighValue: Valeur maximum de la cle couleur

 

Dans le code de Boulder ca donne ceci :

DDPIXELFORMAT ddpf;
DDCOLORKEY Cle;

ddpf.dwSize=sizeof(ddpf); //initialisation de ddpf
BackBuffer->GetPixelFormat(&ddpf); //Demande le format de pixel du BackBuffer

//Fixe la couleur transparente
//Couleur verte 255 par saturation

KeyColor=ddpf.dwGBitMask;

//Fixe la valeur minimum et maximum de la couleur
//Dans cet exemple la couleur n'a pas de tolerance, elle equivaut au vert a 255

Cle.dwColorSpaceHighValue=KeyColor;
Cle.dwColorSpaceLowValue=KeyColor;

//Fixe la cle sur les differents ecrans

FondEcran->SetColorKey(DDCKEY_SRCBLT, &Cle);
Image->SetColorKey(DDCKEY_SRCBLT, &Cle);
Sprite->SetColorKey(DDCKEY_SRCBLT, &Cle);
BackBuffer->SetColorKey(DDCKEY_SRCBLT, &Cle)

//exemple de code pour transferer des zones source rctd vers une Image dans une zone de destination rcts

BackBuffer->Blt(&rctd,Image,&rcts,DDBLT_WAIT|DDBLT_KEYSRC ,NULL);

//si vous voulez afficher le contenu du BackBuffer il faut utiliser le code suivant
//FondEcran->Flip(0,DDFLIP_WAIT);


L'obtention de la valeur de la couleur se fait comme suit:

Color=(((DWORD)(dwRBitMask*0.25)) & dwRBitMask)+(((DWORD)(dwGBitMask*0.25)) & dwGBitMask)+(((DWORD)(dwBBitMask*0.25)) & dwBBitMask);

Pour une valeur RVB de (255,255,0) les facteurs de multiplications seraient (1.0,1.0,0).
Pour une valeur RVB de (0,0,255) les facteurs de multiplications seraient (0,0,1.0)

La valeur maximum exprimée par 255 a un facteur de multiplication de 1.