3.3 Verwendung eines Hardware-Doppelpuffers

Wenn Sie möchten, dass Ihr Skript von den hardwarebeschleunigten Zeichnungsfunktionen von OpenGL profitiert, müssen Sie einen Hardware-Doppelpuffer verwenden und alle Ihre Zeichnungen innerhalb dieses Doppelpuffers ausführen. Durch die Verwendung eines Hardware-Doppelpuffers wird außerdem sichergestellt, dass die Grafikausgabe mit der Aktualisierungsrate des Monitors synchronisiert wird, um Flimmern zu vermeiden. Um eine optimale Leistung mit OpenGL zu erhalten, sollte Ihre Hauptschleife immer so aussehen:

 
@REQUIRE "glgalore"

BeginDoubleBuffer(True)  ; richtet einen Hardware-Doppelpuffer ein

Repeat
    ....          ; zeichnet hier das nächste Einzelbild
    Flip()        ; wartet auf die vertikale Aktualisierung...
                  ; ... und tauscht dann die Puffer aus
    CheckEvent()  ; Callback-Funktion ausführen
Forever

Der Aufruf von CheckEvent() ist nur erforderlich, wenn Ihr Skript auf Ereignis-Handler warten muss, die mit InstallEventHandler() installiert wurden. Beachten Sie, dass Sie das nächste Bild nicht in einem Intervall-Callback zeichnen sollten, der mit einer konstanten Bildrate (etwa 50 fps) läuft. Ein solches Setup garantiert nicht, dass die Zeichnung mit der vertikalen Aktualisierung synchronisiert wird, weil verschiedene Monitore unterschiedliche Bildwiederholraten verwenden und somit Sie flackernde Grafiken erhalten. Wenn Sie Ihre Zeichnung wie oben beschrieben ausführen, können Sie sicher sein, dass die vorderen und hinteren Puffer in perfekter Synchronisation mit der vertikalen Aktualisierung des Monitors gedreht werden.

Darüber hinaus müssen Sie darauf achten, wie Sie Ihre Grafiken tatsächlich zeichnen, da die meisten Zeichnungsbefehle von Hollywood vollständig im Softwaremodus arbeiten und daher nicht von der Hardwarebeschleunigung profitieren. Siehe Grafik zeichnen für Details.

Wichtig: OpenGL ist für die Verwendung mit doppelten Puffern vorgesehen. Daher müssen alle OpenGL-Zeichenbefehle innerhalb eines Doppelpuffers aufgerufen werden. Das Zeichnen außerhalb eines Doppelpuffers mit OpenGL wird nicht unterstützt.


Navigation zeigen