| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 17.05.2004, 13:38 Titel: |
|
|
Wenn du GetSurfaceDesc angewand hast musst du GetPixelFormat anwenden und in der Struktur müsste dann alles enthalten sein:
| Code: | typedef struct _DDPIXELFORMAT{
DWORD dwSize;
DWORD dwFlags;
DWORD dwFourCC;
union
{
DWORD dwRGBBitCount;
DWORD dwYUVBitCount;
DWORD dwZBufferBitDepth;
DWORD dwAlphaBitDepth;
};
union
{
DWORD dwRBitMask;
DWORD dwYBitMask;
};
union
{
DWORD dwGBitMask;
DWORD dwUBitMask;
};
union{
DWORD dwBBitMask;
DWORD dwVBitMask;
};
union
{
DWORD dwRGBAlphaBitMask;
DWORD dwYUVAlphaBitMask;
};
} DDPIXELFORMAT, FAR* LPDDPIXELFORMAT;
|
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 18.05.2004, 20:09 Titel: |
|
|
Ich hab jetzt mal versucht, einfach einen Modus(555 oder 565) anzunehmen.
Da es bei 32 Bit mit folgendem Code funktioniert:
| Code: | r=color<<16;
g=color<<8;
b=color; |
, habe ich dafür jetzt mal andere Zahlen eingesetzt.
| Code: | r=color<<10;
g=color<<5;
b=color; |
Wenn ich das jetzt richtig verstanden habe, sollte das doch eigentlich bei 555 funzen, richtig?
Leider funktioniert es weder so, noch mit <<11 und <<6  _________________ 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 |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 18.05.2004, 20:29 Titel: |
|
|
| Was ist denn Color, wenn das die 32 Bit Farbe ist, kann es nicht gehen. |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 18.05.2004, 20:34 Titel: |
|
|
| Christian Rousselle hat Folgendes geschrieben: | | Was ist denn Color, wenn das die 32 Bit Farbe ist, kann es nicht gehen. |
Das ist es.
Aber was muss ich denn da noch machen?  _________________ 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 |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 18.05.2004, 21:04 Titel: |
|
|
Du muss es, wie ich gezeigt habe umrechnen....dass muss dir doch klar sein. Du muss 3 8 Byte Werte auf 3 5 Byte Werte umrechnen, dass kann nicht nur mit shiften gehen. Hast du dir den Code den ich gepostet habe mal angeschaut? Hast du es so ausprobiert?
C. |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 19.05.2004, 13:47 Titel: |
|
|
| Christian Rousselle hat Folgendes geschrieben: | | Du muss es, wie ich gezeigt habe umrechnen....dass muss dir doch klar sein. Du muss 3 8 Byte Werte auf 3 5 Byte Werte umrechnen, dass kann nicht nur mit shiften gehen. Hast du dir den Code den ich gepostet habe mal angeschaut? Hast du es so ausprobiert? |
Ja ich habs mir angeschaut, aber kapiert habe ichs noch nicht wirklich.
Heißt das, ich hab das shiften richtig gemacht, aber ich muss vorher noch jeden Wert / 255.0f * 32.0f(bzw. 64.0f) nehmen? _________________ 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 |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 19.05.2004, 14:56 Titel: |
|
|
| Ja. |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 19.05.2004, 17:51 Titel: |
|
|
Hmm...irgendwie funzt das nicht.
Ich hab das jetzt so probiert:
| Code: | r=Farbe>>16;
g=Farbe>>8;
b=Farbe;
r/=(255.0f*32.0f);
g/=(255.0f*32.0f);
b/=(255.0f*32.0f); |
Aber es bringt immer noch total falsche Werte(auch bei /255.0f*64.0f).
Wozu ist das Dividieren und Multiplizieren denn genau gut?
Bei der Konvertierung von RGB in COLORREF geht es doch auch einfach nur durch shiften(siehe erster Beitrag im Thema). _________________ 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 |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 19.05.2004, 18:30 Titel: |
|
|
Kannst du mal ein Beispielprogramm zusammenbauen und mir den Code schicken?
C. |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 20.05.2004, 10:58 Titel: |
|
|
Okay, ich mach mal in nächster Zeit eines
Wohin soll ich das dann schicken? _________________ 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 |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 20.05.2004, 12:00 Titel: |
|
|
an mich Christian(at)Rousselle.de |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 21.05.2004, 20:31 Titel: |
|
|
Ich habs jetzt mit Christians Code versucht, aber da gibt es immer noch Abweichungen(von ca. 0-8).
Im Buch wird das ganze ja ohne static_cast etc... beschrieben. Da geht es einfach per shiften:
| Code: | COLORREF color=(((Farbe)>>cPositionred)<<cShiftred)+;
(((Farbe)<<cPositiongreen)>>cShiftgreen)+;
(((Farbe)<<cPositionblue)>>cShiftblue); |
Wenn ich davon die Umkehrung nehme, dann funktioniert es ähnlich wie Christians Code, aber eben auch noch mit Abweichungen:
| Code: | r=(((Farbe)>>cPositionred)<<cShiftred);
g=(((Farbe)>>cPositiongreen)<<cShiftgreen);
b=(((Farbe)>>cPositionblue)<<cShiftblue); |
Allerdings habe ich jetzt festgestellt, dass nicht mal der erste Code(aus JLI1) richtig funktioniert. D.h. aus 3 RGB-Werten wird auf meinem Rechner hier der falsche COLORREF bei 16 Bit errechnet :cry:
<edit>
Was macht eigentlich "static_cast<float>"?
</edit> _________________ 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 |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 21.05.2004, 21:12 Titel: |
|
|
Die Abweichung von 0-8 liegt daran, dass 8*32 256 ist. D.h. immer wenn du einen 32 Bit Wert auf 16 Bit umrechnest (besser gesagt einen 8 Bit Wert auf 5 Bit) und diesen wieder zurückrechnen willst, muss es zu Verlusten kommen. Durchschnittlich 8 Werte aus dem 8 Bit Wertebereich werden auf einen Wert aus dem 5 Bit Wertebereich gemappt. Was du beschreibst ist normal.
Christian |
|
| Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 21.05.2004, 21:18 Titel: |
|
|
Aha.
Und gibt es da keine Möglichkeit, das auf 16 Bit zu lassen?
Oder ist ein COLORREF zwangsweise 32 Bit? (eigentlich logisch)  _________________ 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 |
|
 |
The Lord of Programming Living Legend

Alter: 38 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.05.2004, 21:12 Titel: |
|
|
Jetzt funktionierts jedenfalls(bis auf die kleinen Abweichungen) perfekt =)
Danke für eure Mühe & Hilfe  _________________ 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 |
|
 |
|