Double Buffering für das PB-Canvas

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Purethom
Beiträge: 50
Registriert: 21.09.2004 05:41
Wohnort: Berlin

Double Buffering für das PB-Canvas

Beitrag von Purethom »

Hallo ihr Lieben,

um mir das Pseudo-OOP von PureBasic näher zu bringen, habe ich ein kleines objektorientiertes Snake-Projekt von Delphi nach PureBasic umgeschrieben. Jetzt läuft es aber das Flimmern im Canvas ist schlicht unerträglich. In Delphi hat das Canvas eine Eigenschaft DoubleBuffer, die das Flimmern eleminiert. Nun habe ich Forensuche und Google-Recherche betrieben, bin zu dem Schluss gekommen, das das PB-Canvas auch ein Double Buffering anbietet aber wie man es aktiviert und einsätzt habe ich nicht verstanden. Ist jemand unter euch, der mir mit einfachen Worten und eventuell einem Code-Beispiel erklären kann, wie das funktioniert? Oder hat jemand einen Link zu einem verständlichen Artikel?

Jede Hilfe ist mir sehr willkommen.

Danke im voraus und liebe Grüße aus Berlin sendet

Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Double Buffering für das PB-Canvas

Beitrag von Danilo »

Das CanvasGadget ist automatisch double-buffered und flackerfrei. Die Grafikbefehle werden auf dem Backbuffer
ausgeführt, und erst StopDrawing() zeigt alles in einem Rutsch an.

Kannst Du mal ein Minimalbeispiel zeigen, welches bei Dir flackert und Deine Vorgehensweise zeigt?
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Double Buffering für das PB-Canvas

Beitrag von NicTheQuick »

Der Trick ist, 'StartDrawing()' nur einmal pro Schleifedurchlauf zu machen, und sobald 'StopDrawing()' ausgeführt wird, wird alles angezeigt.
Bild
Benutzeravatar
Purethom
Beiträge: 50
Registriert: 21.09.2004 05:41
Wohnort: Berlin

Re: Double Buffering für das PB-Canvas

Beitrag von Purethom »

@Danilo
Ich habe das Snake noch einmal ohne die Pseudo-OOP durchgecodet und siehe da, es flimmert nicht mehr. Das Problem muss also in dieser Ecke liegen. Ob ich das finde, weiss ich nicht. Aber vielen Dank für deinen Hinweis und deine Hilfsbereitschaft.

@Nic
Auch dir vielen Dank. Das habe ich anscheinend intuitiv und nach Lektüre der Doku richtig gemacht. Das erst nach StopDrawing() gezeichnet wird, wusste ich allerdings noch nicht. Wo bekommt man solche Infos?
Du bist im Übrigen an allem Schuld :wink: Mit deinem Video-Tutorial "[PB] HowTo ConcurrentQueue" hast du mich total inspiriert. Und da ich die letzten Jahre etwas mit Delphi 7 und Lazarus/FreePascal gecodet habe, wollte ich mal solch ein Projekt in PB umsetzen. Hat auch prima geklappt, bis auf das flimmern. Aber das Grundsätzliche ist jetzt klar. Auch noch einmal vielen Dank für deine anderen Video-Tutorials. Seit dem ich die durchgearbeitet habe, ist sehr vieles sehr viel klarer geworden :allright: . Mach bitte weiter so!

Viele Grüße aus Berlin sendet

Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Double Buffering für das PB-Canvas

Beitrag von NicTheQuick »

Das freut mich, dass dir die Videos weiter geholfen haben. Hast du dir auch [PB] HowTo: Canvas Windows Teil 1 und Teil 2 angeschaut?
Bild
Benutzeravatar
Purethom
Beiträge: 50
Registriert: 21.09.2004 05:41
Wohnort: Berlin

Re: Double Buffering für das PB-Canvas

Beitrag von Purethom »

Angesehen hab ich sie alle. Mit dem Canvas-Window-Tutorial habe ich gerade angefangen es nachzucoden. Die anderen drei habe ich durch. Gibt es noch mehr als diese 5? Ich war total überrascht, das du hinter dem Bastelkeller steckst. Jetzt haben deine Postings auch eine Stimme :wink: .

Viele Grüße aus Berlin sendet

Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Double Buffering für das PB-Canvas

Beitrag von NicTheQuick »

Wenn ich demnächst beruflich in Berlin bin, sag ich dir nochmal Bescheid. Dann trinken wir ein Bierchen, wenn es sich einrichten lässt. :allright:
Bild
Benutzeravatar
Purethom
Beiträge: 50
Registriert: 21.09.2004 05:41
Wohnort: Berlin

Re: Double Buffering für das PB-Canvas

Beitrag von Purethom »

Das können wir gern machen :allright: . Aber sei dir im klaren darüber, das du dich hier mit einem alten Mann verabredest. Ich hab mal in deinem Profil gestöbert und gesehen, das du Informatik studierst. Auch ich habe einen Sohn, der Informatik an der HU hier in Berlin studiert.

Viele Grüße aus Berlin sendet

Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Antworten