|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
SwordFish Mini JLI'ler
Alter: 40 Anmeldedatum: 01.05.2007 Beiträge: 4 Wohnort: Amberg Medaillen: Keine
|
Verfasst am: 01.06.2008, 08:37 Titel: DirectDraw7 und Colorkeys |
|
|
Hallo zusammen, ich brauch mal wieder Hilfe =), wie das halt bei so einem anfänger ist ^^
Und zwar hab ich folgendes Problem:
Wie die Überschrift schon andeutet, gehts um Colorkeys und Transparenz. Ich versuche momentan in meinem Programm 2 Bilder auf den Bildschirm zu blitten, das eine ist ein Hintergrundbild und das andere ein Sprite! Mein Problem ist aber, dass er bei meinem Sprite die Farbe die ich hier angebe, nicht transparent macht.
CPP: | void Sprite::Create(LPDIRECTDRAWSURFACE7 lpDDSurface) {
lpDDSpriteSurface = lpDDSurface;
DDSURFACEDESC2 SurfaceDesc;
ZeroMemory(&SurfaceDesc, sizeof(SurfaceDesc));
SurfaceDesc.dwSize = sizeof(SurfaceDesc);
lpDDSpriteSurface->GetSurfaceDesc(&SurfaceDesc);
SpriteWidth = SurfaceDesc.dwWidth;
SpriteHeight = SurfaceDesc.dwHeight;
DDCOLORKEY ColorKey;
ColorKey.dwColorSpaceLowValue = 0;
ColorKey.dwColorSpaceHighValue = 0;
lpDDSpriteSurface->SetColorKey(DDCKEY_SRCBLT | DDCKEY_COLORSPACE, &ColorKey);
} |
/*****Main-Methode*****/
CPP: | if(!DDClass.Init(hWnd)) {
return FALSE;
}
LPDIRECTDRAWSURFACE7 lpDDSPic_1;
lpDDSPic_1 = DDClass.CreateSurfaceFromBitmap(IMAGE_FILE2, 100, 150);
if(!lpDDSPic_1) {
return Error("Fehler beim Laden des Pic_1-Bildes");
}
Pic_1.Create(lpDDSPic_1);
Pic_1.SetXY(SRC_WIDTH/2, SRC_HEIGHT/2);
|
Also im Großen und Ganzen habe ich 2 Klassen, eine DirectDraw-Klasse und eine Sprite-Klasse. Das Blitten an sich funktioniert einwandfrei, allerdings wird in meinem Programm wie gesagt, die Farbe nicht transparent gemacht. In einem anderen Programm aus den Beispielen aus dem Buch, mit dem ich arbeite, allerdings schon ...
Kann mir irgendwer helfen und sagen was ich falsch mache?
Hier ist noch meine Render-Methode:
CPP: | void Render(void) {
DDClass.Clear(0);
DDClass.GetBuffer()->BltFast(0, 0, lpDDSurface, NULL, DDBLTFAST_WAIT);
Pic_1.Draw(DDClass.GetBuffer());
DDClass.Flip();
} |
und meine Draw-Methode der Sprite-Klasse:
CPP: | void Sprite::Draw(LPDIRECTDRAWSURFACE7 lpDDSurface) {
lpDDSurface->BltFast(x, y, lpDDSpriteSurface, NULL, DDBLTFAST_WAIT);
} |
In dem Beispiel aus dem Buch findet die Erzeugung der Sprite-Oberfläche in der Initialisierungs-Methode, in der auch das DirectDraw-Objekt angelegt wird. Diese Methode steht in der selben .cpp wie die Main-Methode. Mein Code ist aber aufgeteilt auf mehrere Dateien, kann das daran liegen???
Sollte noch zusätzlicher Code benötigt werden, stelle ich ihn gerne rein
MfG _________________ Das Leben ist ein Test, den DU bestehen MUSST! |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.06.2008, 14:24 Titel: |
|
|
Du musst beim Blitten mit angeben, ob der Colorkey überhaupt verwendet werden soll:
CPP: | cBackbuffer.sSurface->BltFast(X,Y,surface->sSurface,NULL,DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY); |
_________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
SwordFish Mini JLI'ler
Alter: 40 Anmeldedatum: 01.05.2007 Beiträge: 4 Wohnort: Amberg Medaillen: Keine
|
Verfasst am: 01.06.2008, 15:05 Titel: |
|
|
oh mein gott ... ich muss echt geschlafen haben, als ich den code geschrieben hab ....
vielen dank für die hilfe! =)
man o man _________________ Das Leben ist ein Test, den DU bestehen MUSST! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|