DirectDraw und Transparenz: Problem mit Farbdefinition (ColorKey)
-
Hallo,
ich hab nen Problem mit dem setzen des ColorKey für eine Surface.
Gibts da etwas besonderes zu beachten (DX-flag)? bei mir ist nurRGB(0,0,0) RGB(255,255,255)transparent, der Rest funktionioniert nicht. Die Bilddaten sind 24Bit.
ich setze immer folgendermaßen:ColorKey.dwColorSpaceLowValue = RGB(0,0,0); ColorKey.dwColorSpaceHighValue = RGB(0,0,0); m_pSurface->SetColorKey(DDCKEY_SRCBLT,&ColorKey);zeichnen funktioniert im vollbild mit:
BltFast(nXPos,nYPos,pSurface,&rcSource,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT)))irdendwelche ideen?
danke!
marcello
-
in welchen Format erwartet dwColorSpaceLowValue den Colorkey? wenn du dir darüber klar bist, dann ist wahrscheinlich auch dein Problem gelöst
-
-
Ich nehme an du willst mir sagen mein Farb-Format ist schrott?
hmm. komisch, hab ich aber schon an einigen Stellen so gesehen....
ich schau mal! danke!
-
Gehirnmann schrieb:
hmm. komisch, hab ich aber schon an einigen Stellen so gesehen....
Ich hab' auch schon Stellen gesehen, wo im GUI-Thread komplizierte Berechnungen wie Apfelmännchen und so angestellt wurden... Willst doch wohl nicht sagen das wär' Schrott?!?

-
Hol dir das Farbformat mit
GetDisplayMode(&ddsd);Danach speicherst du diese in
MaskRed = ddsd.ddpfPixelFormat.dwRBitMask; MaskGreen = ddsd.ddpfPixelFormat.dwGBitMask; MaskBlue = ddsd.ddpfPixelFormat.dwBBitMask;Die Farbe berechnest du mit
color=(((unsigned long)(MaskRed * r )) &m_MaskRed)+ (((unsigned long)(MaskGreen* g )) &m_MaskGreen)+ (((unsigned long)(MaskBlue * b )) &m_MaskBlue);Beachte das die einzelnen Farbwerte in einem Bereich von 0 bis 1.0 liegen.
-
Sollte eiegentlich immer noch in der FAQ stehen.
Bye, TGGC (Keine Macht den Dummen)