RGB
aus RHWiki, der freien Romhacking-Enzyklopädie
RGB ist die Abkürzung für Rot/Grün/Blau und bezeichnet ein Schema zur Angabe von Farbwerten. Dabei kann jeder Farbanteil eines Pixels frei aus dem vollen Farbspektrum gewählt werden und unterliegt keinen wesentlichen Beschränkungen im Gegensatz zu Paletten. Alle Farbanteile ergeben gemischt die darzustellende Farbe.
Der einzige Schwachpunkt ist entweder die Ungenauigkeit bei niedriger Farbtiefe (BPP), oder der hohe Speicherverbrauch bei hoher Farbtiefe.
RGB-Werte können entweder direkt im Bild angegeben werden (und so die Farbe eines Pixels bestimmen), oder in Paletten einen Eintrag darstellen, der dann im Bild verwendet werden kann.
| Inhaltsverzeichnis |
Farbtiefe
Je nach Farbtiefe stehen jedem RGB-Anteil nur begrenzt viele Bits zur Verfügung. Bei niedrigen Farbtiefen erhöht sich die Ungenauigkeit, da größere Schrittweiten verwendet werden (1/31 ist z.B. größer als 1/255). Ab 24bpp ist das Farbspektrum so groß, dass man in der Regel keinen Unterschied mehr sieht und nebeneinander liegende Farben fließend ineinander übergehen. Auf PCs werden heutzutage fast ausschließlich 32bit Modi (00 RR GG BB) zur Darstellung verwndet. Seltener sind 24bit Modi, die eigentlich effektiver wären. Vor einigen Jahren wurden auf Desktop-PCs ausschließlich 16bit Modi [5bits rot; 6 bits grün; 5bits blau] verwendet. Hierbei waren die Farbunterschiede bei Farbverläufen mit dem menschlichen Auge noch leicht sichtbar.
Aufbau
RGB-Werte können ziemlich unterschiedlich aufgebaut sein. Daher lässt sich hier auch Pauschal keine Umrechnung angeben. Diese sind systemspezifisch und werden in den folgenden Artikeln abgedeckt:
RGB auf PCs
Die am meisten gebräuchliche Darstellungsform, welche meistens bei PCs verwendet wird, verwendet für jede Farbkomponente ein Byte.
FF7F00 = R255 G127 B0 = Orange RoGrBl
Diese 3 Bytes (insgesamt 24 Bit werden von PCs der Einfachheit wegen jedoch in einem ganzen 32 Bit Integer untergebracht:
00 RR GG BB
Diese Form lässt sich ganz einfach in Farben des älteren 16 Bit Farbraums umrechnen, wobei Grün ein Bit mehr bekommt:
Rot5 = Rot8 BitShiftRechts 3 // Farben in Komponenten unterteilen
Grün6 = Grün8 BitShiftRechts 2
Blau5 = Blau8 BitShiftRechts 3
// Farben kombinieren
Farbe16 = (Rot5 BitShiftLinks 11) +
(Grün6 BitShiftLinks 5) +
(Blau5 BitShiftLinks 0)
rrrr rggg gggb bbbb (Bitzuweisung Ergebnis)
Dieser Rechenweg lässt sich natürlich noch optimieren, jedoch ist er so am verständlichsten.

