Seite 2 von 3

Verfasst: 15.01.2006 01:20
von Batze
Gut meinetwegen nur am Ende.
Es ging auch eher um das "oder".
Er hatte nämlich na Anfang und Ende eins, und dazwischen auch noch.

Verfasst: 15.01.2006 02:56
von Zaphod
es spricht überhaupt nichts dagegen flipbuffers am anfang zu nutzen, wichtig ist einfach nur, dass man flipbuffers nur einmal pro durchlauf benutzt.
flipbuffers tauscht den backbuffer mit dem frontbuffer aus, der inhalt, den man im vorigen durchlauf draufgepinselt hat, geht zwischen den durchläufen nicht verloren.

Verfasst: 15.01.2006 10:34
von crossroads
Zaphod hat geschrieben:es spricht überhaupt nichts dagegen flipbuffers am anfang zu nutzen, wichtig ist einfach nur, dass man flipbuffers nur einmal pro durchlauf benutzt.
flipbuffers tauscht den backbuffer mit dem frontbuffer aus, der inhalt, den man im vorigen durchlauf draufgepinselt hat, geht zwischen den durchläufen nicht verloren.
Ich halte es schlichtweg für falsch, FlipBuffers() am Anfang zu benutzen; dadurch wird irgendetwas angezeigt, was gerade im unsichtbaren Buffer steht. Dagegen wird der neue Inhalt, der nach FlipBuffers() gezeichnet wird, zunächst mal gar nicht angezeigt - erst dann, wenn (zufällig) wieder irgendwo im Programmablauf das nächste FlipBuffers() abgearbeitet wird - oder auch gar nicht, wenn z. B. der User das Prog beendet :?
Ein FlipBuffers() am Ende einer Routine hingegen stellt sicher, daß der eben erstellte Bufferinhalt auch sofort angezeigt wird :allright:

Verfasst: 15.01.2006 11:46
von Batze
In einer Schleife kommt aber der Anfang sofort nach dem Ende.
PB ist das egal, nur manche Programmierer werden das nicht sofort verstehen, dewegen baut man es ans Ende.

Verfasst: 15.01.2006 12:47
von Fairman68
Hallo, hier geht es ja ab, ich bin begeistert mit welchen Elan hier mein Problem bearbeitet wird :)

Doch nun mal auf den Punkt zu kommen, Flipbuffers am Anfang bringt gar nichts, wie oben gesagt der inhalt des Bilschirms bleibt erstmal weg, wenn ich zu den bestehenden Bilschirm was dazuzeichne und dann Flipbuffers() aufrufe dann ist nur das neue da, und das alte gezeichnete ist weg, dann wieder ein 2. Flipbuffers() dann ist alles auf den bildschirm, darum 2mal (aber dann Flackerts) . Das ist ja mein problem, das Problem ist nun erkannt... :allright:

Nur hat jemand nun auch eine Lösung???? /:->

Es muss doch möglich sein auf den Bildschirm zum Bsp. einen Text mittels DrawText() zu schreiben... und später in einer weiteren Routine eine Box() noch hinzu ohne das der Bildschirm einmal Flackert und ohne das ich den Text nochmal neu schreiben muss. Ich dachte Purebasic kann (fast) alles !!. :roll:

Doch anscheinend ist es nicht möglich etwas auf den Bilschirm zu zeichnen und später noch etwas hinzuzufügen ohne das Bild nochmals alle Routinen zu durchlaufen hat um alles wieder zu zeichnen und wieder total neu aufzubauen.

Gruß Fairman68

Verfasst: 15.01.2006 14:31
von NicTheQuick
Entweder du zeichnest pro Schleifendurchlauf immer wieder alles, was
normal ist, oder aber du zeichnest alles auf ein Screengroßes Sprite, das
du pro Durchlauf dann immer auf den Bildschirm setzt. Dann kannst du
auch nacheinander alles auf ein Sprite zeichnen und es flimmert nichts.

Verfasst: 15.01.2006 15:03
von Zaphod
@Crossroads:
zufällig passiert da nichts, das flipbuffers am anfang kommt nicht später als wenn es unten stehen würde.
der einzige unterschied ist, das genau ein einzelnes frame, beim allerersten durchlauf der schleife nach start des programmes einen leeren bildschirm zeigt.

also für (schlimmstenfalles) eine sechzigstel sekunde und der ist vermutlich auch noch schwarz. wenn dir das auffällt, dann mußt du wohl ein ausserirdischer sein.

Verfasst: 15.01.2006 16:01
von Batze
@Fairman68: Es gibt eigentlich zwei Seiten (Buffer) für den Screen.
Du musst dir das vorstellen wie eine Tafel.
Du siehst nur die vordere Seite, malst aber auf die hintere.
Das verhindert, dass der User etwas vom Zeichnen mitbekommt.
FlipBuffers() klappt quasi die Tafel um, sodass du das Bild angezeigt bekommst.
Das ist auch der Grund, für dein Problem (du malst nur auf eine Seite, die andere beleibt schwarz).
Du solltest also am besten jedes mal neu zeichnen. :allright:

Willst du das nicht gibt es ja noch die Möglichkeit auf ein Sprite zu zeichnen und dieses anzuzeigen.

Verfasst: 15.01.2006 17:50
von crossroads
Zaphod hat geschrieben:@Crossroads:
zufällig passiert da nichts, das flipbuffers am anfang kommt nicht später als wenn es unten stehen würde.
der einzige unterschied ist, das genau ein einzelnes frame, beim allerersten durchlauf der schleife nach start des programmes einen leeren bildschirm zeigt ....
... und das letzte Frame nie angezeigt wird, weil die Schleife ohne abchließendes FlipBuffers() - kam ja schon am Anfang - verlassen wird :?

Verfasst: 15.01.2006 17:55
von Batze
Zaphod hat geschrieben:es spricht überhaupt nichts dagegen flipbuffers am anfang zu nutzen ...
Außer, dass es manche Programmierer dann nicht verstehen. Von der Funktion her bleibt es (fast) gleich.