2017-03-12 36 views
1

每次清除屏幕时重绘每个图像都非常痛苦。防止图像被清除[PYGAME-Python]

import pygame 
    from pygame.locals import * 
    T = pygame.display.set_mode((500,500)) 
    M = pygame.image.load("test.jpg") 
    X = 0 
    Y = 0 
    while True: 
     X += 1 
     Y += 1 
    # Other sprites are here which are also redrawn every time loop runs. 
    # Other code is here too, this is just a little part of it to help explain my problem 
     T.fill((0,0,0)) 
     T.blit(M,(X,Y)) 
     pygame.display.flip() 

在上面的代码,我加载在M个可变背景图像,每次我清除屏幕更新我的精灵的位置,我也不得不重新绘制,这是造成严重的FPS下降的背景图像。

无论如何,我可以防止背景图像被清除,每当我使用T.fill((0,0,0))?

回答

1

首先,尝试convert的背景图片。图像通常应该使用convertconvert_alpha进行转换以提高性能。

M = pygame.image.load("test.jpg").convert() 

其次,如果背景图像具有画面的大小可以省略线T.fill((0,0,0)),由于背景反正充满屏幕。第三,如果背景不滚动,并且您只需要每帧更新一些屏幕部分,则可以尝试使用pygame.display.update()而不是pygame.display.flip()。将单个矩形或者矩形列表传递给pygame.display.update以告知它应该更新屏幕的哪些部分。

我不确定这些措施是否会大幅改善性能。 Pygame相当慢,因为它仍然依赖于软件渲染。

旁注,使用描述性变量名称而不是T,M等。

+1

谢谢!第一个工作! –