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
Double Buffering für das PB-Canvas
Double Buffering für das PB-Canvas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Re: Double Buffering für das PB-Canvas
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?
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
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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
Der Trick ist, 'StartDrawing()' nur einmal pro Schleifedurchlauf zu machen, und sobald 'StopDrawing()' ausgeführt wird, wird alles angezeigt.
Re: Double Buffering für das PB-Canvas
@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 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 . Mach bitte weiter so!
Viele Grüße aus Berlin sendet
Thomas
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 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 . Mach bitte weiter so!
Viele Grüße aus Berlin sendet
Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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
Das freut mich, dass dir die Videos weiter geholfen haben. Hast du dir auch [PB] HowTo: Canvas Windows Teil 1 und Teil 2 angeschaut?
Re: Double Buffering für das PB-Canvas
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 .
Viele Grüße aus Berlin sendet
Thomas
Viele Grüße aus Berlin sendet
Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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
Wenn ich demnächst beruflich in Berlin bin, sag ich dir nochmal Bescheid. Dann trinken wir ein Bierchen, wenn es sich einrichten lässt.
Re: Double Buffering für das PB-Canvas
Das können wir gern machen . 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
Viele Grüße aus Berlin sendet
Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!