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 ]