Beim Anzeigen eines Paletten-Hintergrundbilds mit DisplayBGPic() oder beim Zuweisen eines Paletten-Hintergrundbilds zu einem Display mit der Präprozessor-Anweisung @DISPLAY oder SetDisplayAttributes(), versetzt Hollywood das Display in den Palettenmodus. Dies bedeutet, dass die einzigen Farben, die zum Zeichnen auf diesem Display verfügbar sind, die in der Palette sind. Dies ist sehr ähnlich zu alter Grafikhardware aus den 1980er und frühen 1990er Jahren, die nur eine feste Anzahl im Bereich von 2 bis 256 Farben auf dem Bildschirm anzeigen konnte.
Ein Vorteil des Palettenmodus besteht darin, dass durch Ändern der Farbe eines Stifts in der Palette alle Pixel, die diesen Stift verwenden, auch sofort ihre Farbe ändern. Dadurch ist es möglich, auf einfache Weise Code zu schreiben, der die Palettenfarben ausblendet oder sie zyklisch durchläuft. Farbwechseleffekte waren in den 1980er und frühen 1990er Jahren eine sehr beliebte Methode, um Grafiken wie Wasserfälle oder Regen zu animieren. Durch die Verwendung eines Hollywood-Displays im Palettenmodus können diese Effekte in Hollywood leicht nachgebildet werden.
Ein weiterer Vorteil von Palettenmodus-Displays besteht darin, dass der Speicherverbrauch viel geringer als bei der Verwendung von Echtfarb-Displays ist. Im 32-Bit-True-Color-Modus benötigt ein einzelnes Pixel 4 Byte Speicher, während im Palettenmodus ein einzelnes Pixel nur 1 Byte Speicher benötigt. So benötigt ein 1920x1080-Bild im 32-Bit-Modus etwa 8 Megabyte Speicher, im Palettenmodus jedoch nur 2 Megabyte.
Bei der Verwendung von Displays im Palettenmodus ist jedoch große Vorsicht geboten, da sonst das Zeichnen sehr langsam werden kann. Dies liegt daran, dass standardmäßig alle Grafiken, die Sie in einem Display im Palettenmodus zeichnen, der Palette des Displays neu zugeordnet werden, damit ihr Erscheinungsbild dem Original so nahe wie möglich kommt. Genauer gesagt, bedeutet die Neuzuordnung, dass Hollywood alle Pixel der Quellgrafiken scannen und die beste Übereinstimmung für jedes Pixel in der Palette des Displays finden muss. Dies ist natürlich ein sehr zeitaufwändiger Vorgang und macht das Zeichnen sehr langsam. Aus diesem Grund können Sie am schnellsten auf einem Palettenmodus-Display zeichnen, indem Sie sicherstellen, dass alle Grafiken dieselbe Palette verwenden. Dann muss keine Neuzuordnung durchgeführt werden und die Grafikdaten können einfach ohne langsamen Pixel-Anpassungsalgorithmus auf das Display kopiert werden.
Um die Neuzuordnung eines Palettenmodus-Displays zu deaktivieren,
müssen Sie #PALETTEMODE_PEN
an SetPaletteMode()
übergeben. Dies ermöglicht das stiftbasierte Zeichnen. Wenn
Sie Palettengrafiken auf das Display zeichnen, geht Hollywood
davon aus, dass sie dieselbe Palette wie das Display verwenden.
Sie können also einfach so auf das Display kopiert werden, wie
sie sind.
Wenn der Palettenmodus auf #PALETTEMODE_PEN
eingestellt wurde,
ignorieren einfarbige Zeichnungsbefehle wie Box()
oder Circle() die an sie übergebene RGB-Farbe.
Stattdessen zeichnen sie die Formen einfach mit dem Stift, der
mit SetDrawPen() festgelegt wurde. Möglicherweise
ignorieren auch aktive Schatten- und Rahmeneffekte die Standard-Schatten-
und Rahmenfarbe, die mit SetFormStyle()
oder SetFontStyle() eingestellte wurden,
und zeichnet den Schatten und den Rahmen mit dem Stift, der
mit SetShadowPen() und SetBorderPen()
gesetzt wurde. Außerdem wird das Antialiasing deaktiviert,
wenn #PALETTEMODE_PEN
aktiv ist, da Paletten in den meisten
Fällen nicht genug Farben haben, um Kanten zufriedenstellend
mit Antialiasing zu glätten.
Beachten Sie jedoch, dass RGB-Grafiken auch dann noch neu zugeordnet
werden müssen, wenn #PALETTEMODE_PEN
aktiv ist, da es unmöglich
ist, RGB-Grafiken auf andere Weise in ein Palettenmodus-Display
zu zeichnen. Daher sollte das Zeichnen von 32-Bit-Echtfarbgrafiken
auf Palettenmodus-Displays vermieden werden, da dies immer langsam
ist, weil für diese Grafiken eine Neuzuordnung erforderlich
ist und daran kein Weg vorbei führt.
Die Art und Weise, wie Grafikdaten der Palette eines Displays neu zugeordnet werden, kann durch den Befehl SetDitherMode() konfiguriert werden. Auf diese Weise können Sie das Dithering aktivieren oder deaktivieren und den zu verwendenden Dithering-Algorithmus angeben.
Palettenmodus-Displays unterstützen alle Befehle von normalen Displays. Es ist auch möglich, Ebenen, Sprites, Übergangseffekte, Beschneidungsbereiche, Videos und Doppelpuffer mit Palettenmodus-Displays zu verwenden. Beachten Sie jedoch die oben genannten Hinweise, da sonst das Zeichnen sehr langsam werden kann.
Siehe Paletten-Übersicht um mehr über Paletten zu erfahren.