2017-09-22 36 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