![JLI Spieleprogrammierung Foren-Übersicht](templates/subSilver/images/jlilogo.jpg) |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DeeJay87 Mini JLI'ler
Anmeldedatum: 02.10.2002 Beiträge: 1
Medaillen: Keine
|
Verfasst am: 02.10.2002, 16:11 Titel: RGB-Werte eines Pixels erfassen (DirectDraw, 16-Bit) |
|
|
Hallo!
Ich hab ein kleines Problem in meinen DirectDraw Programmen, und dachte mir, vielleicht könnte ich hier Hilfe finden.
Wie auch in dem Buch "Spieleprogrammierung mit DirectX und Visual C++" nutze ich zur Berechnung von Farben und
zur Erfassung des Pixelformats folgende Funktionen:
void DeterminePixelFormat(LPDIRECTDRAWSURFACE7 lpDDSurface){
DDPIXELFORMAT ddpf;
ddpf.dwSize = sizeof(ddpf);
lpDDSurface->GetPixelFormat(&ddpf);
while(0 == (ddpf.dwRBitMask & 1)){
ddpf.dwRBitMask >>= 1;
PosRed++;
}
ShiftRed = (ddpf.dwRBitMask == 31) ? 3 : 2;
while(0 == (ddpf.dwGBitMask & 1)){
ddpf.dwGBitMask >>= 1;
PosGreen++;
}
ShiftGreen = (ddpf.dwGBitMask == 31) ? 3 : 2;
PosBlue = 0;
ShiftBlue = (ddpf.dwBBitMask == 31) ? 3 : 2;
}
int CalcColor(BYTE r, BYTE g, BYTE b){
switch(COLOR_DEPTH){
case 32:
case 24:
return ((r<<16) + (g<<8 ) + b);
break;
case 16:
return ((( (r) >> ShiftRed) << PosRed) +
(( (g) >> ShiftGreen) << PosGreen) +
(( (b) >> ShiftBlue) << PosBlue));
default:
return 0;
}
}
Als nächstes sperre ich eine Oberfläche mit Lock, dann will ich mir den R-, den G- und den B- Wert des Pixels aus seinem Farbwert herausfiltern, um seine Farbe (für einen Fade zum Beispiel) zu manipulieren. Ich habe schon diverse Funktionen geschrieben, die dieses Zweck erfüllen sollten, jedoch funktionierte keine von ihnen...ist es überhaupt möglich die RGB-Werte herauszufiltern? |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Jörg JLI MVP
![JLI MVP JLI MVP](http://www.jliforum.de/images/mvp.gif)
![](http://mitglied.tripod.de/messiahzone/jesus/kiste.gif)
Anmeldedatum: 19.07.2002 Beiträge: 182 Wohnort: Siegen/NRW Medaillen: Keine
|
Verfasst am: 02.10.2002, 19:17 Titel: |
|
|
Um die einzelnen Farbkomponenten aus einer Farbe rauszufiltern musst du eigentlich nur den Weg umkehren, über den du den Farbwert in der Farbe speicherst.
Code: |
int GetRed(int nColor)
{
switch (COLOR_DEPTH)
{
case 24:
return nColor >> 16;
case 16:
return (nColor >> PosRed) << ShiftRed;
}
}
|
Die Funktionen fuer Gruen und Blau sind analog zu dieser. _________________ www.messiahzone.de.vu |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|