Frage deutsch
~~~~~~~~~~~~~~~~
Was ist der Unterschied zwischen Page Flipping u. Double-Buffering?
Was ich immer schon mal wissen wollte, was ist eigentlich der entscheidende Unterschied zwischen
- Page-Flipping (d.h. sichtbare uns unsichtbare Seite vertauschen) und
- Double-Buffering (d.h. arbeiten mit PCOPY)?
Mit Page-Flipping habe ich nicht so gute Erfahrungen gemacht, da dabei immer noch eine Pause eingebaut werden muss (d.h. ein paar Befehle mehr), sonst flimmerts nämlich doch. Könnte es sein, dass Page-Flipping schneller ist?
 

Question English
~~~~~~~~~~~~~~~~
What's the difference between Page Flipping and Double Buffering?
 

Antwort 1
~~~~~~~~~~~~~~~~
[ von Thomas Antoni, 15.1.2006 ]
 
Sowohl ->
Page Flipping als auch -> Double Buffering sind Techniken zum Erzeugen butterweicher Grafik-Animationen. Dabei werden neue Bilder erst in einem "Hintergrundspeicher" aufgebaut, bevor sie in einem Rutsch sichbar gemacht, d.h. in den aktuellen Speicherbereich des Bildschirmspeichers (video Memory) eingetragen werden. Der Unterschied zwischen den beiden Methoden liegt darin, wo sich der "Hintergrundspeicher" befindet.
 
Beim Page Flipping wird die Eigenschaft moderner Grafikkarten ausgenutzt, die für gewisse Bildschirmmodi 2 (oder mehr) "Bildschirmseiten" (Video Pages) bereitstellen, zwischen denen mit einem einzigen Befehl umgeschaltet werden kann.
QBasic unterstützt Page-Flipping nur mit den SCREENs 0, 7 und 9 direkt durch umschaltbare Bildschirmseiten. Die Umschaltung zwischen den Bildschirmseiten erfolgt über den SCREEN-Befehl. Die anderen SCREENs, so auch der beliebte VGA-SCREEN 12 haben leider nur jeweils eine Bildschirmseite. Ein Programmbeispiel für Page Flipping findest Du im FAQ-Eintrag "Wie verwende ich mehrere Bildschirmseiten (Page Flipping)?" .
 
Hier hilft nur noch das Double Buffering. Dabei wird ein Speicherbereich als Puffer für das Hintergrundbild verwendet, der nicht im Video-RAM, sondern im "normalen" RAM oder auf der Festplatte liegt,
In der Praxis werden die Begriffe "Page Flipping" und "Double Buffering" nicht so stark getrennt und oft gleichbedeutend verwendet.
 
 
 

Antwort 2
~~~~~~~~~~~~~~~~
[ von Dreael, im QB-Forum, 24.2.2005 ]
Da ich ja unter
http://dreael.catty.ch/Deutsch/BASIC-Knowhow-Ecke/ButterweicheAnimationen.html
auch meinen bekannten Animationsartikel im Programm habe, folgende Stellungsnahme meinerseits zur Titelfrage:
Bei älteren PCs (ich begann ja schliesslich so mit 8088 und 80286) war das Umkopieren einer grösseren Speichermenge relativ zeitaufwändig, so dass ich von da her immer noch gewohnt bin, mit Page Flipping zu arbeiten.
Was aber tatsächlich stimmt: Bei
http://dreael.catty.ch/Deutsch/Download/Pyramide3D.html
konnte ich auf schnelleren Rechnern auch schon ein Flimmern beobachten. Analysen ergaben, dass gewisse Grafikkarten (VGA-BIOS-Implementationen) die CPU bereits zurückgeben, noch bevor die eigentliche Videoseiten-Umschaltung beim VBlank erfolgt. Wenn man nur mit 2 Seiten arbeitet, so führt man beim Bildaufbau z.B. ein CLS durch, was man bereits sieht, weil ja noch die alte Seite von der Grafikkarte verarbeitet wird.
Arbeitet man dagegen mit 3 und mehr Videoseiten, so scheint der Effekt nicht mehr aufzutreten, denn dort scheint das VGA-BIOS den Prozessor bei einem neuen Wechsel die CPU anzuhalten, falls der alte Wechsel noch nicht verarbeitet wurde.
Bei den heutigen 3 GHz-Rechnern kann man dagegen problemlos nur noch mit Double Buffering und PCOPY arbeiten. Von da her müsste ich meinen Artikel mal leicht updaten. ;-)

[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]