在屏幕上遍历图像时抖动帧率

时间:2017-09-22 05:28:41

标签: python performance pygame frame-rate

我想知道这是pygame的限制还是我做错了。当我在屏幕上移动图像时,帧速率是可变且缓慢的。我真的很想让它顺利。我的代码是:

screen = pygame.display.set_mode((1280, 720), pygame.FULLSCREEN)

pygame.key.set_repeat(1, 1)
map = pygame.image.load('test_2000x1333.jpg')

camera_x = -320
camera_y = -250

clock = pygame.time.Clock()
game_running = True

while game_running:
    for event in pygame.event.get():
        key_pressed = pygame.key.get_pressed()

        if key_pressed[pygame.K_w]:
            if camera_y < 0:
                camera_y += 2
        if key_pressed[pygame.K_s]:
            if camera_y > -550:
                camera_y -= 2
        if key_pressed[pygame.K_a]:
            if camera_x < 0:
                camera_x += 2
        if key_pressed[pygame.K_d]:
            if camera_x > -630:
                camera_x -= 2

        if event.type == pygame.KEYDOWN:
            if pygame.key.get_mods() & pygame.KMOD_ALT:
                if event.key == pygame.K_F4:
                    game_running = False

    screen.blit(map, (camera_x, camera_y))

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

我尝试添加'pygame.DOUBLEBUF | pygame.HWSURFACE'到display.set_mode标志,但它似乎没有帮助。

1 个答案:

答案 0 :(得分:0)

使用该图像大小,我怀疑你是在尝试在Raspberry Pi,Android或其他一些不被PyGame加速的设备上执行此操作。引用:

  

Raspberry Pi是一款具有强大GPU功能的慢速CPU。 Pygame本身并不利用GPU,导致您遇到的性能不佳。要利用GPU,您需要为您的编程语言找到一个适用于OpenGLES,OpenVG等的库。幸运的是,有一些库可以大大简化这一点 - 以下是一些示例:   pi3D和Simple2D。   还有其他一些取决于您要使用的语言。   此外,Graphics Programming Forum on the Raspberry Pi Forums非常有助于学习如何从Raspberry Pi GPU中获得最佳性能。   如果您想了解GPU的强大功能,请查看Raspbian附带的hello_video系列演示 - Raspberry Pi Demo Programs

您的代码没有任何问题。