Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在树莓皮上使用pygame进行屏幕撕裂_Python_Raspberry Pi_Pygame_Vsync - Fatal编程技术网

Python 在树莓皮上使用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(加载

我被屏幕撕裂问题困扰了大约一个星期

这里是我的问题:我想做一个程序,可以显示一个PNG图片序列非常快(以30帧或以上的速度)。为此,我使用pygame库,尤其是
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()