43.37 Hardware-Pinsel

Hardware-Pinsel werden für beschleunigte Hardwarezeichnungen in Verbindung mit einem Hardware-Doppelpuffer verwendet. Um einen Hardware-Pinsel zu erstellen, setzen Sie einfach bei den Befehlen LoadBrush() oder @BRUSH den Tag Hardware auf True. Alternativ können Sie auch von einem normalen Pinsel einen Hardware-Pinsel erstellen, indem Sie CopyBrush() benutzen und bei diesem Befehl den Tag Hardware auf True setzen. Um herauszufinden, ob ein Hardware-Pinsel erfolgreich erstellt wurde, können Sie den Befehl GetAttribute() mit dem Attribut #ATTRHARDWARE aufrufen. Beachten Sie, dass dieses Attribut False zurückgeben kann, auch wenn der Tag Hardware auf True gesetzt wurde. Nicht alle Systeme unterstützen Hardware-Pinsel. Wenn Hollywood auf einem System ohne Hardware-Pinsel Unterstützung läuft, wird stattdessen ein Softwarepinsel erstellt.

Der Vorteil der Hardware-Pinsel ist, dass sie vollständig in dem Videospeicher gesichert sind und können somit sehr schnell dargestellt werden. Allerdings können Hardware-Pinsel nichts anderes, als nur in den hardwarebeschleunigte Doppelpuffer gezeichnet zu werden. Deshalb arbeiten fast alle Befehle der Pinsel-Bibliothek nicht mit Hardware-Pinseln. Wenn Sie einen Hardware-Pinsel ändern möchten, müssen Sie aus ihm zunächst einen Softwarepinsel erstellen. Diesen Softwarepinsel ändern Sie und wandeln ihn dann wieder in einen Hardware-Pinsel um. Sie können einen hardwarebeschleunigten Doppelpuffer erstellen, indem Sie beim Befehl BeginDoubleBuffer() das erste Argument auf True setzen. Siehe BeginDoubleBuffer für Details.

Denken Sie daran, dass Sie nur unter Verwendung von Hardware-Pinsel auf hardwarebeschleunigte Doppelpuffer zeichnen sollten. Alle anderen Zeichnungsbefehle sind viel langsamer! Nur durch verwenden von Hardware-Pinsel können Sie eine vollständige hardwarebeschleunigte Zeichnung erhalten. Benutzen Sie normale Zeichnungsbefehle mit einem Hardware-Doppelpuffer, kann er sogar langsamer sein, als wenn Sie einen Software-Doppelpuffer gebrauchen. Dies ist insbesondere bei Grafiken der Fall, die einen Alphakanal verwenden, wie z.B. Antialias-Text oder Vektorformen, weil das Lesen der Daten aus dem Videospeicher sehr langsam ist. Daher sollten Sie versuchen, Hardware-Pinsel wo auch immer möglich zu verwenden, wenn Sie mit einem Hardware-Doppelpuffer arbeiten.

Auf einigen Systemen (z.B. AmigaOS 4.1) bieten die Befehle ScaleBrush(), RotateBrush() und TransformBrush() sowie die Standard-Tags zum Zeichnen für on-the-fly Bildbearbeitung (z.B. ScaleX und ScaleY) beschleunigte Hardwareunterstützung für Hardware-Pinsel. In diesem Fall ist das Skalieren und Transformieren von Pinseln extrem schneller als im Softwaremodus (insbesondere für antialiased Transformationen).

Standardmäßig werden die Hardware-Pinsel nur auf AmigaOS und Android unterstützt. Ab Hollywood 6.0 jedoch können Plugins benutzt werden, die ein Display-Adaptermodul für Grafikkarten installieren können und so auch Hardware-Pinsel unterstützen. In diesem Fall können Sie auch Hardware-Pinsel auf anderen Systemen als AmigaOS und Android verwenden. Zum Beispiel können die Plugins GL Galore und RebelSDL Hardware-Pinsel und hardwarebeschleunigte Doppelpuffer unter Windows, macOS und Linux verwenden.

Hardware-Pinsel können auch Display abhängig sein. Dies bedeutet, dass sie nur auf dem Display dargestellt werden, das verwendet wurde. Dies ist häufig der Fall, wenn Display-Adaptermodule benutzerdefinierte Displays von Plugins zur Verfügung stellen. Hollywoods eingebaute Hardware-Pinsel für AmigaOS und Android sind jedoch nicht Display abhängig und können auf jedem Display gezeichnet werden, die derzeit geöffnet sind. Um einen displayabhängigen Hardware-Pinsel zuzuweisen, müssen Sie die ID des Displays übergeben, die die Hardware-Pinsel über den Tag Display der Befehle LoadBrush(), @BRUSH oder CopyBrush() erhalten. Beachten Sie, dass alle displayabhängigen Hardware-Pinsel automatisch von Hollywood freigegeben werden, wenn das zugehörige Display geschlossen wird.


Navigation zeigen