Umwandlung von 8-Bit-Farben in RGB-Werte
Ich implementiere die globale Beleuchtung in meiner Game-Engine mit "Reflective Shadow Maps". RSM hat u.a. Farbtextur. Speicher sparen. Ich packe 24-Bit-Wert in 8-Bit-Wert. OK. Ich weiß, wie man es packt. Aber wie packe ich es aus? Ich hatte die Idee, eine 1D-Textur mit 8-Bit-Palette und 255 verschiedenen Farben zu erstellen. Meine 8-Bit-Farbe wäre der Pixelindex in dieser Textur. Ich bin mir nicht sicher, wie ich diese Art von Textur erzeugen soll. Gibt es mathematische Möglichkeiten, 8-Bit-Werte in RGB umzuwandeln?
@edit Die Farbe hat folgendes Format:
RRR GGG BB
@ edit2: Und ich packe meine Farbe so:
int packed = (red / 32 << 5) + (green / 32 << 2) + (blue / 64);
//the int is actually a byte, c# compiler is bitching if it's byte.
@ edit3:
Okay, ich habe einen Weg gefunden, das zu tun, denke ich. Sag mir, ob es falsch ist.
@ edit4 Es ist falsch ...
int r = (packed >> 5) * 32;
int g = ((packed >> 2) << 3) * 32;
int b = (packed << 6) * 64;