JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=60a0ffa50768baaa7c3430900aa2a201Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DirectDraw7 und Colorkeys

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
SwordFish
Mini JLI'ler


Alter: 39
Anmeldedatum: 01.05.2007
Beiträge: 4
Wohnort: Amberg
Medaillen: Keine

BeitragVerfasst am: 01.06.2008, 08:37    Titel: DirectDraw7 und Colorkeys Antworten mit Zitat

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 Smile

MfG
_________________
Das Leben ist ein Test, den DU bestehen MUSST!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.06.2008, 14:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
SwordFish
Mini JLI'ler


Alter: 39
Anmeldedatum: 01.05.2007
Beiträge: 4
Wohnort: Amberg
Medaillen: Keine

BeitragVerfasst am: 01.06.2008, 15:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum