Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.08.2005, 19:04 Titel: [DDraw] Grafikkonvertieren |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.08.2005, 19:19 Titel: |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.08.2005, 21:04 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.08.2005, 21:57 Titel: |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 28.08.2005, 06:55 Titel: |
|
|
hm, ja ich hab n bisschen rumprobiert und jetzt scheint es zu funktionieren. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
|