Tansparente Bitmaps
-
Hallo Forum,
Ich benutze directDraw 7.0 und lasse auf meinem bildschirm ein paar bitmaps anzeigen.
Nun möchte ich sagen, alles was im Bild beispielsweise weiß ist, tanzparent ist.Ein Bitmap wird ja bloß als Array abgespeichert, und während der grafikkarte übermittelt wird, das dieses bild angeueigt werden soll, das nebenbei eine if bedingung leuft, wie beispielsweise:
if(PixelFarbe == weiß)
{
mach garnix
}Ist das nicht irgentwie möglich?
-
Schau doch bei joachimrohde.com vorbei, da gibts ein Kapitel mit Transparenten Bitmaps auf Knopfdruck.
Allerdings OpenGL.
-
du brauchst ein RGBA bild und dort wo R, G und B 255 sind, setzt du A auf 255.
-
Was du suchst, nennt sich Colorkey. Ich hab in einem Buch dazu folgendes Beispiel für schwarz als ColorKey gefunden, ich hab aber von DDraw wenig bis gar keine Ahnung:
DDCOLORKEY ColorKey; //schwarze Pixel sollen nicht kopiert werden ColorKey.dwColorSpaceLowValue = 0; ColorKey.dwColorSpaceHighValue = 0; lpDDSpriteSurface->SetColorKey(DDCKEY_SRCBLT, &ColorKey);Da müsste beim Blitten der Surface lpDDSpritSurface die schwarzen Pixel aussparen, wie das aber mit anderen Farben aussieht, liest du am besten in der SDK Doku nach...
Grüße
Martin
-
He,
Bei www.directxtutorial.com gibts Tutorials dazu (auf englisch).
Hier mal ein direkter Link:
http://directxtutorial.com/Tutorial9/B-Direct3DBasics/dx9B12.aspx
Vielleicht hilfts Dir ja weiter...
-
Ok, danke für die hilfe, ich werde mich mirgen dann mal dranne setzen und ein wenig rumbastelt, im moment bin ich zu müde^^
-
Soweit ich weiß geht bei DirectDraw kein Alphakanal? Nur bei DirectGraphics.
Jep du musst dass per ColorKeying machen. Und dazu beim Blitten nach DDBLT_WAIT noch | DDBLT_KESYSRC schreiben.