Bildschirmflackern ???
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.
flipbuffers tauscht den backbuffer mit dem frontbuffer aus, der inhalt, den man im vorigen durchlauf draufgepinselt hat, geht zwischen den durchläufen nicht verloren.
- crossroads
- Beiträge: 244
- Registriert: 29.08.2004 05:41
- Wohnort: Rhine Main Area
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 beendetZaphod 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.

Ein FlipBuffers() am Ende einer Routine hingegen stellt sicher, daß der eben erstellte Bufferinhalt auch sofort angezeigt wird

Man soll die Tür aufmachen, bevor man durchgeht ...
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...
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 !!.
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

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...

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 !!.

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
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
@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.
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.
@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.
Willst du das nicht gibt es ja noch die Möglichkeit auf ein Sprite zu zeichnen und dieses anzuzeigen.
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.

Willst du das nicht gibt es ja noch die Möglichkeit auf ein Sprite zu zeichnen und dieses anzuzeigen.
- crossroads
- Beiträge: 244
- Registriert: 29.08.2004 05:41
- Wohnort: Rhine Main Area
... und das letzte Frame nie angezeigt wird, weil die Schleife ohne abchließendes FlipBuffers() - kam ja schon am Anfang - verlassen wirdZaphod 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 ....

Man soll die Tür aufmachen, bevor man durchgeht ...