Doppelpufferung

Aus DGL Wiki
Wechseln zu: Navigation, Suche

Doppelpufferung (engl. double buffering) ist eine Technik, um die Darstellung halbfertiger Bilder während des Zeichnens zu vermeiden. Sie kommt dann zum Einsatz, wenn ein Bild nicht als Ganzes erzeugt werden kann, sondern erst durch einzelne Zeichenoperationen schrittweise aufgebaut werden muß.

Technischer Hintergrund

Sämtliche Inhalte, die auf dem Monitor zu sehen sein sollen, müssen im Grafikkartenspeicher abgelegt sein. Der aktuelle Inhalt des Grafikkartenspeichers wird einstellungsabhängig etwa 80 Mal pro Sekunde von der Grafikkarte neu an den Bildschirm gesendet, der einzig für die Darstellung dieser Informationen zuständig ist. Der Bildschirminhalt wird also etwa alle 12,5ms durch den aktuellen Inhalt des Grafikkartenspeichers ersetzt.

Würde man beim schrittweisen Aufbauen eines Bildes durch einzelne Zeichenoperationen die dafür nötigen Änderungen direkt im aktuell dargestellten Grafikkartenspeicher vornehmen und würde der Aufbau des Bildes länger als diese 12,5ms dauern, dann würde der Benutzer ein nur teilweise gezeichnetes Bild sehen.

Um dies zu vermeiden, verwendet man Doppelpufferung. Hierbei wird der später darzustellende Bildschirminhalt nicht direkt in den aktuellen Grafikkartenspeicher (Frontbuffer) geschrieben, sondern zuerst in einem anderen Speicherbereich der Grafikkarte, der aktuell nicht dargestellt wird, abgelegt (Backbuffer). Wurden alle Zeichenoperationen zur Erzeugung des darzustellenden Bildes durchgeführt, wird der Backbuffer mit dem Frontbuffer vertauscht, so dass der Backbuffer zum Frontbuffer wird und dessen Inhalt angezeigt wird. Der Speicherbereich, der zuvor Frontbuffer war, wird jetzt nicht mehr angezeigt und kann als Backbuffer verwendet werden. Ist das nächste Bild fertig gezeichnet, werden die beiden Puffer wieder getaucht.

Gibt es Nachteile?

Der einzige Nachteil von Doppelpufferung ist der doppelt so hohe Speicherbedarf, da immer zwei Bilder im Grafikkartenspeicher gehalten werden müssen: Zum einen das aktuell angezeigte Bild, zum anderen das Bild, das erst später gezeigt werden soll und das sich möglicherweise noch im Aufbau befindet. Dies gilt jedoch nur für den Farbpuffer. Tiefen- und Stencilbuffer werden nur einmal für den Backbuffer benötigt.

Auf den aktuellen Standardkarten steht zudem üblicherweise ausreichend viel Speicher zur Verfügung, so dass keinesfalls auf die Vorteile von Doppelpufferung verzichtet werden sollte.

Siehe Auch

SwapBuffers
Triple-Buffering
V-Sync