Python 在树莓皮上使用pygame进行屏幕撕裂
我被屏幕撕裂问题困扰了大约一个星期 这里是我的问题:我想做一个程序,可以显示一个PNG图片序列非常快(以30帧或以上的速度)。为此,我使用pygame库,尤其是Python 在树莓皮上使用pygame进行屏幕撕裂,python,raspberry-pi,pygame,vsync,Python,Raspberry Pi,Pygame,Vsync,我被屏幕撕裂问题困扰了大约一个星期 这里是我的问题:我想做一个程序,可以显示一个PNG图片序列非常快(以30帧或以上的速度)。为此,我使用pygame库,尤其是pygame.display.blit和pygame.display.flip 下面是一个代码示例(带有自制的延迟功能): 导入时间 导入pygame screen=pygame.display.set_模式(大小,pygame.FULLSCREEN) NBC负载=12 图片=范围(nbPicturesToLoad) 对于范围内的i(加载
pygame.display.blit
和pygame.display.flip
下面是一个代码示例(带有自制的延迟功能):
导入时间
导入pygame
screen=pygame.display.set_模式(大小,pygame.FULLSCREEN)
NBC负载=12
图片=范围(nbPicturesToLoad)
对于范围内的i(加载):
pictures[i]=pygame.image.load(pictureName.convert()//此处pictureName取决于i的值
(...)
对于范围内的i(加载):
timer1=time.time()
屏幕显示(图片[i],(0,0))
pygame.display.flip()
timer2=time.time()
定时器=定时器2-定时器1
虽然(timer尝试使用Pygame时钟来处理计时,但它更易于实现和理解,并且可以解决问题
如下所示:
import pygame as py
py.init()
WINDOW = (400,400)
screen = py.display.set_mode(WINDOW)
nbPicturesToLoad=12
pictures = range(nbPicturesToLoad)
for i in range(nbPicturesToLoad):
pictures[i]=py.image.load(pictureName).convert()
FPS = 30
clock = py.time.Clock() # Create a clock object
done = False
while not done:
for event in py.event.get():
if event.type == py.QUIT:
done = True
for i in range(nbPicturesToLoad):
screen.fill((255,255,255))
screen.blit(pictures[i],(0,0))
py.display.flip()
clock.tick(FPS) # use pygame.time.Clock to wait 1/30th of a second
py.quit()
然而,由于这是一个屏幕撕裂问题,解决方案可能是完全停止使用Pygame。
这个问题似乎涵盖了你可能要找的东西
祝你好运。作为癫痫患者,我需要问你为什么要这样做,你知道这种显示器的闪烁会给像我这样的人带来麻烦,对吧?我完全知道;)。这不是一个游戏或任何人都可以下载的东西,它是一个个人项目,只能由我自己使用:我正在开发一个使用投影仪和相机的3D扫描仪。摄像头捕捉投影仪显示的帧。是的,它更容易实现和理解,但它没有解决问题。我会调查的,谢谢。问题解决了,你的回答给了我一些其他的想法!如果我可以问的话,你是怎么解决的?有类似问题的
import pygame as py
py.init()
WINDOW = (400,400)
screen = py.display.set_mode(WINDOW)
nbPicturesToLoad=12
pictures = range(nbPicturesToLoad)
for i in range(nbPicturesToLoad):
pictures[i]=py.image.load(pictureName).convert()
FPS = 30
clock = py.time.Clock() # Create a clock object
done = False
while not done:
for event in py.event.get():
if event.type == py.QUIT:
done = True
for i in range(nbPicturesToLoad):
screen.fill((255,255,255))
screen.blit(pictures[i],(0,0))
py.display.flip()
clock.tick(FPS) # use pygame.time.Clock to wait 1/30th of a second
py.quit()