2017-09-22 37 views
0

遍历图像时,我还是想知道如果这是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

加载的图像的通常应与['convert'](http://www.pygame.org/docs/ref/surface.html#pygame.Surface.convert)或'convert_alpha'方法来提高性能转换:'map = pygame.image.load('test_2000x1333.jpg')。convert()'。让我知道这是否有帮助。 – skrx

回答

0

与该图像的大小,我怀疑你想这样做对树莓派,Android或不是由pygame的加速一些其它设备。引用:

树莓派是一个很慢的CPU与一个非常强大的GPU。 Pygame本身不会利用GPU,导致您遇到的糟糕表现。要充分利用GPU,你需要找到你的编程语言库,与OpenGLES,开放式VG等幸运的是,有极大地简化了这几个库工程 - 这里是一些例子: pi3D和Simple2D。 还有一些取决于您想使用哪种语言。 此外,Graphics Programming Forum on the Raspberry Pi Forums在学习如何从Raspberry Pi GPU中获得最高性能方面非常有帮助。 如果你想的GPU多么强大,从某种意义上说,检查出hello_video系列演示的附带Raspbian - Raspberry Pi Demo Programs

没有什么错与您的代码。

+0

我在Windows 10具有1920×1080显示屏,酷睿i5-4430和GTX 760。我试图地图= pygame.image.load(“test_2000x1333.jpg”)。()转换和.convert_alpha(),但我不”没有看到性能改进。 – mendlo

+0

是的,你写的东西没有什么错。 PyGame在2D中没有有意义的加速,而且你正在做的是尽可能慢的操作,这是全屏重绘。如果你使用的是Anaconda或其他什么,可能会有一个退化的设置,我只是在猜测。自然地,用快速的计算机不应该有任何问题。你最好的选择是使用不是基于pyGame的Python游戏套件。 – DoctorPangloss