Seite 1 von 1

Problem mit RGB und Farbmischungen ..

Verfasst: 08.01.2010, 06:53
von HeinzK
Problem mit RGB und Farbmischungen ..

(DirectDrawCreateEx . (LPVOID *)&lpDd ..)

lpDd->SetDisplayMode
(
(DWORD)g_lDisplayMode_x,
(DWORD)g_lDisplayMode_y,
(DWORD)g_lDisplayMode_p,
0,
0
);

16bit: #define ZWIANER_RGB16(r,g,b)(__int16)(((r) << 11)|((g) << 5)|((b) << 0))
32bit: #define ZWIANER_RGB32(a,r,g,b)(__int32)(((a) << 24)|((r) << 16)|((g) << 8)|((b) << 0))

__int32 i32FrbNr = ZWIANER_RGB16(ucR, ucG, ucB);
bzw.
__int32 i32FrbNr = ZWIANER_RGB32(0, ucR, ucG, ucB);

Kann mir jemand sagen, was ich falsch mache?
Unter 32bit sind Geometrie und alle Farben OK!
Unter 16bit ist die Geometrie in Ordnung, aber die Farben sind alle falsch. außer ein
wirklich reines Rot oder Grün oder Blau.

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 08.01.2010, 08:15
von Lord Delvin
Willst du nicht einfach die Unterstützung für 16bit Farben weglassen? Ich mein wer braucht sowas heutzutage noch? Und auf einigen Bildern ist schon 32bit zu wenig.

Im übrigen glaub ich, dass es daran liegt, dass sich die Farbwerte bei dir überlappen, d.h. du musst die chars erst so verschieben, dass sie tatsächlich auch nur die untersten 5/6 Bits verwenden, also da fehlt noch sowas wie (g>>2) oder (b>>3).

EDIT: Aber überleg dir mal wie viel Zeit du dafür verbrauchst. Das mit dem ARGB32 schaffst du mit nem union übrigens mit einer instruktion. Also union Farbe{ char a,r,g,b; int argb32; }; so irgendwie, kann mich an die genaue Syntax grad nicht erinnern.

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 08.01.2010, 08:17
von Jörg
Jo, schaut fuer mich danach aus als ob Du im 16-Bit - Fall die Farben falsch mischst, weil du immer das volle Byte verschiebst, aber nicht auf den kleineren Wertebereich anpasst.

Versuch mal (fuer 5-6-5 RGB):
#define ZWIANER_RGB16(r,g,b)(__int16)((b>>3) | ((g&0xFC) << 3) | ((b & 0xF8) << 8))

Das ist jetzt aus dem Kopf, kontrolliers lieber nochmal...

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 08.01.2010, 15:28
von HeinzK
Lösung! :oops: :roll: :idea:
Das Problem lag an der ZwiAner-Installations-Version. Diese hat eine
vorbereitete Farbtabelle mit auf die Rechner installiert.
Diese Farbtabelle war auf meinen Arbeitsrechner aber nicht vorhanden.
Ok, nun läufts auf 32bit!
Nochmals Danke für Eure Hinweise. Hab' viel gelernt in den letzten 36 Stunden.

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 08.01.2010, 20:28
von Jörg
Wie jetzt, ich dachte, unter 32bit lief es eh....

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 08.01.2010, 20:56
von HeinzK
Ja, aber jetzt bin ich sicher, dass alles auf dem gleichen Stand ist!

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 09.01.2010, 14:07
von Helmut
Vergiss übrigens nicht, dass __int32/16 signed sind. Für Farben benutzt man normalerweise unsigned Werte, da sonst schnell was schief gehen kann ;)

Re: Problem mit RGB und Farbmischungen ..

Verfasst: 09.01.2010, 15:38
von HeinzK
Danke für den Tipp.