BeginDoubleBuffer([hardware])
Doppelpuffer sind äußerst nützlich, wenn viele Grafiken in einer Bildschirmaktualisierung gezeichnet werden müssen. Wenn Sie nur ein kleines Bild bewegen müssen, sollten Sie besser Sprites verwenden, weil es damit schneller geht. Denken Sie daran, dass ein doppelt gepuffertes Display immer den ganzen Bildschirm aktualisiert. Wenn Sie also eine Anwendung in 640x480 bei 25 fps läuft, wird es etwas Arbeit für Hollywood bedeuten, weil ein Bildschirm von 640x480 25-mal in der Sekunde gezeichnet werden muss.
Doppelpuffer werden auf einer Pro-Display Basis installiert.
Wenn Sie also BeginDoubleBuffer()
aufrufen, wird nur das aktuell
ausgewählte Display in den Doppelpuffermodus versetzt werden.
Nicht alle Displays werden somit doppelt gepuffert! Wenn Sie
alle Ihre Displays doppelt gepuffert haben wollen, dann müssen
Sie BeginDoubleBuffer()
für jedes einzelne Ihrer Display aufrufen.
Es gelten aber bestimmte Einschränkungen:
BeginDoubleBuffer()
aktiv ist, darf nicht transparent sein.
Ab Hollywood 5.0, gibt es das neue optionale Argument hardware
,
womit Sie Hardwaredoppelpuffer aktivieren können. Auf unterstützten Systemen
ist dies viel schneller als Softwaredoppelpufferung, da es vollständig im
Videospeicher ausgeführt wird, der die GPU zum Zeichnen verwendet. Es gibt
aber einige Einschränkungen: Wenn Sie einen Hardwaredoppelpuffer
verwenden, sollten Sie wann immer möglich Hardware-Pinsel benutzen.
Alle anderen Zeichnungsbefehle sind viel langsamer! Nur bei Verwendung
von Hardware-Pinsel können Sie eine vollständig beschleunigte
Hardwarezeichnung erhalten. Mit normalen Zeichnungsbefehlen kann
Hardwaredoppelpuffer sogar langsamer sein, als es mit
Softwaredoppelpuffer wäre. Dies ist insbesondere dann bei Grafiken
der Fall, die einen Alphakanal verwenden, z.B. Antialiasing-Text
oder Vektorformen. Daher sollten Sie versuchen, wann immer möglich
Hardware-Pinsel zu verwenden, wenn Sie mit einem Hardwaredoppelpuffer
arbeiten. Siehe Informationen über Hardware-Pinsel für Details.
Bitte beachten Sie, dass derzeit Hardware-Doppelpufferung nur auf AmigaOS und Android unterstützt wird und standardmäßig voreingestellt ist. Allerdings können Plugins, die ein Display-Adaptermodul installieren, auch Hardware-Doppelpuffer für ihr Display-Adaptermodul unterstützen. In diesem Fall können Sie auch Hardware-Doppelpuffer auf anderen Systemen verwenden. Zum Beispiel können die GL Galore- und RebelSDL-Plugins Hardware-Doppelpuffer unter Windows, macOS und Linux verwenden. Siehe Vorhandene Plugins für Details.
Bitte beachten Sie auch, dass Hollywood auf einigen Systemen in den Singlepuffermodus fallen könnte. Daher ist es nicht sicher, dass der Befehl Flip() wirklich die Puffer wechselt. Es könnte auch einfach in den einzelnen Puffer zeichnen und dann alle Aktualisierungen wieder darauf anwenden.
Siehe auch EndDoubleBuffer() und Flip().
True
wird Hardwaredoppelpuffer eingeschaltet
(voreingestellt ist False
, womit Softwaredoppelpuffer verwendet wird) (V5.0)BeginDoubleBuffer() CreateBrush(1, 64, 64, #RED) For k = -64 To 640 Cls DisplayBrush(1, k, #CENTER) Flip Next EndDoubleBuffer()Der obige Code bewegt ein rotes Rechteck von links außen nach rechts außen ohne sichtbares Flimmern. Dies ist kein gutes Beispiel, weil wir nur ein kleines Bild bewegen. Es ist eine Menge Aufwand, das ganze 640x480 Display nur für dieses kleine Bild zu aktualisieren, so sollten Sie in diesem Fall besser Sprites verwenden. Denken Sie daran, dass Doppelpufferung nur empfohlen wird, wenn eine Menge Grafiken zu aktualisieren/zeichnen gibt.