Ich komme zu diesem Forum, weil ich auf einem Bildschirm reißen Problem seit etwa einer Woche fest bin. Zunächst muss ich sagen, dass ich wenig Wissen und Erfahrung in Himbeer und Python habe.Bildschirm reißen mit Pygame auf Himbeer Pi
Hier ist mein Problem: Ich möchte ein Programm machen, das eine Sequenz von PNG-Bildern wirklich schnell (mit einer Geschwindigkeit von 30 fps oder mehr) anzeigen kann. Dazu benutze ich die Pygame-Bibliothek, insbesondere pygame.display.blit und pygame.display.flip. Hier ist ein Beispiel für den Code (mit einer hausgemachten Verzögerungsfunktion):
import time
import pygame
screen=pygame.display.set_mode(size, pygame.FULLSCREEN)
nbPicturesToLoad=12
pictures=range(nbPicturesToLoad)
for i in range(nbPicturesToLoad):
pictures[i]=pygame.image.load(pictureName).convert() //Here pictureName depends on the value of i
(...)
for i in range(nbPicturesToLoad):
timer1=time.time()
screen.blit(pictures[i], (0,0))
pygame.display.flip()
timer2=time.time()
timer=timer2-timer1
while(timer<0.03333):
timer2=time.time()
timer=timer2-timer1
Der Timer ermöglicht es mir, die gleiche Aktualisierungsrate auf dem Bildschirm zu haben. Mein Problem ist, dass man mit eigenen Augen sehen kann, dass es ein Siebreißproblem gibt (https://en.wikipedia.org/wiki/Screen_tearing). In der pygame-Dokumentation wird empfohlen, andere Flags für den Bildschirm init zu verwenden (pygame.HWSURFACE und pygame.DOUBLEBUF, http://www.pygame.org/docs/ref/display. ... y.set_mode). Anscheinend könnten diese helfen, die Probleme beim Abreißen des Bildschirms zu korrigieren. Aber wenn ich diese Flags verwende, sehe ich keine Bildschirmreißkorrektur. Ich habe irgendwo gesehen, dass Pygame Vsync auf X11 nicht umgehen kann, was erklären würde, warum ich keinen Unterschied zu den HWSURFACE und DOUBLEBUF Flags sehe.
Hat jemals jemand dieses vsync Problem auf dem Raspberry Pi begegnet? Gibt es einen Parameter, der in die Datei "config.txt" eingefügt werden soll? Hat jemand eine Möglichkeit, echte vsync-Informationen zu erhalten, um diese Bildschirmreifeffekte zu vermeiden?
Ich habe gesehen, dass pyglet Vsync in den erstellten Fenstern verarbeiten konnte, aber aus unbekannten Gründen kann ich keine Bilder im Pyglet-Fenster anzeigen und ich bin mir wirklich nicht sicher, ob es das Problem beheben würde, besonders wenn Himbeere kann 't Hand vsync jetzt ...
Jede Hilfe wäre willkommen :). Chumbucket
Als jemand mit Epilepsie muss ich fragen, warum Sie das tun wollen, und Sie sind sich bewusst, dass diese Art von Flackern des Displays für Menschen wie mich Probleme verursachen kann, oder? – marienbad
Ich bin mir dessen voll bewusst;). Es ist kein Spiel oder etwas, das jeder herunterladen kann, es ist ein persönliches Projekt und wird nur von mir selbst benutzt: Ich entwickle einen 3D-Scanner mit einem Projektor und einer Kamera. Die Kamera nimmt die vom Projektor angezeigten Bilder auf. – Chumbucket