Doppelpufferung

Aus DGL Wiki
Version vom 1. November 2005, 18:41 Uhr von Slyh (Diskussion | Beiträge) (Komplettüberarbeitung)

Wechseln zu: Navigation, Suche

Doppelpufferung (double buffering) ist eine Technik, um die Darstellung halbfertiger Bilder während dem Zeichnen 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 Grafikkarten-Speicher abgelegt sein. Der aktuelle Inhalt des Grafikkarten-Speicher 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 Bildschirm-Inhalt wird also etwa alle 12,5ms mit dem aktuellen Inhalt des Grafikkarten-Speichers ersetzt.

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

Um dies zu vermeiden, verwendet man Doppelpufferung. Hierbei wird der später darzustellende Bildschirm-Inhalt nicht direkt in den aktuell Grafikkarten-Speicher (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 daß 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.

Auf den aktuellen Standardkarten steht jedoch üblicherweise ausreichend viel Speicher zur Verfügung, so daß keinesfalls auf die Vorteile von Doppelpufferung verzichten werden sollte.