JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

[DDraw] Grafikkonvertieren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.08.2005, 20:04    Titel: [DDraw] Grafikkonvertieren Antworten mit Zitat

CPP:
   //ein DirectDraw Surface erstellen und die Daten hineinkopieren:
   DDSURFACEDESC2 SurfDesc;
   ZeroMemory(&SurfDesc, sizeof(DDSURFACEDESC2));
   SurfDesc.dwSize=sizeof(SurfDesc);
   SurfDesc.dwFlags=DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
   SurfDesc.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
   SurfDesc.dwWidth=Header2.biWidth;
   SurfDesc.dwHeight=Header2.biHeight;

   m_lpDD=lpDD;
   m_lpSPrimary=lpSPrimary;
   m_lpDD->CreateSurface(&SurfDesc, &m_lpSurface, NULL);


m_lpSurface->Lock(NULL, &SurfDesc, DDLOCK_WAIT, NULL);
   byte *pSurface=reinterpret_cast<byte*>(SurfDesc.lpSurface);
   for(int i=0; i<Header2.biHeight; ++i)
   {
      memcpy(pSurface+SurfDesc.lPitch*i, pData+(Header2.biWidth*3)*i, Header2.biWidth*3);
   }
   m_lpSurface->Unlock(NULL);

Also, Sourcegrafik ist in dem byte Array als 24 Bit gespeichert, also 3 byte pro Farbe. Der Code stürtzt nicht ab, aber funktioniert net korrekt es gibt verschiebungen und Farbstörungen, wohl folgen eines falschen Kopiervorgangs. Jemand ne Idee?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 27.08.2005, 20:15    Titel: Antworten mit Zitat

Farbtiefe der Bitmap, Farbtiefe der Zielsurface, Farbtiefe des Backbuffers.

ggf. bessere Fehlerbeschreibung.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.08.2005, 20:19    Titel: Antworten mit Zitat

backbuffer 32 bit, der Bitmap wie schon erwähnt 24 bit und das Surface, kein Plan, wie man sieht stehts da net, da könnte man dezent auf 32 bit tippen damit es zum Backbuffer passt. Soll ich dann mal testen das Bild in 32 bit zu konvertieren, also Pixel für Pixel kopieren?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 27.08.2005, 20:46    Titel: Antworten mit Zitat

guck mal auf meiner site das funnybreak tutorial (letzter Teil), da werden Bitmaps benutzt unter DirectDraw
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.08.2005, 22:04    Titel: Antworten mit Zitat

ja, das ist erstens der vorletzte Teil und zweitens wird da genau die Variante benutzt die im buch auch schon lang und breit erklärt wird. Da ich mir aber gedacht habe, "haste schonmal n bitmap-Loader geschrieben, wäre schade den jetzt nicht zu benutzen" möchte ich gerne wissen wie ich die schon vorhandenen Farbdaten in meinem byte Array so in die Oberfläche bekomme das sie korrekt angezeigt wird. Wie gesagt, sie ist leicht vertzerrt, wird mit komischen schlieren in der breite ca. 1,3 mal dargestellt, weil halt das kopieren falsch ist.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.08.2005, 22:57    Titel: Antworten mit Zitat

CPP:
   m_lpSurface->Lock(NULL, &SurfDesc, DDLOCK_WAIT, NULL);
   byte *pSurface=reinterpret_cast<byte*>(SurfDesc.lpSurface);
   for(int y=0; y<Header2.biHeight; ++y)
   {
      for(int x=0; x<Header2.biWidth; ++x)
      {
         pSurface[4*x+y*SurfDesc.lPitch+0]=pData[3*x+y*Header2.biWidth*3+0];
         pSurface[4*x+y*SurfDesc.lPitch+1]=pData[3*x+y*Header2.biWidth*3+1];
         pSurface[4*x+y*SurfDesc.lPitch+2]=pData[3*x+y*Header2.biWidth*3+2];
      }
   }

Das geht schon besser es scheint alles zu funzen, nur die Farben stimmen noch nicht, da muss ich wohl noch n bisschen was dran drehen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 28.08.2005, 00:08    Titel: Antworten mit Zitat

Vertausch Rot mit Blau
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 28.08.2005, 07:55    Titel: Antworten mit Zitat

hm, ja ich hab n bisschen rumprobiert und jetzt scheint es zu funktionieren.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 28.08.2005, 09:23    Titel: Antworten mit Zitat

Liegt daran das Bitmaps bzw. eher das DIB Format im BGR format abgespeicher wird und die Grafikkarte futtert lieber ARGB
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL 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