pygame:pygame.display.flip()大大降低了游戏速度

时间:2018-06-30 13:00:34

标签: pygame

我目前正在研究Super Mario Bros克隆,当我运行display.flip()或diplay.update()时,我的fps上限约为20fps。

即使只有一个clock.tick(60)和update()却没有绘制任何内容的空主循环也会产生相同的结果。

当我删除display.update()时,我的游戏运行所有计算都会得到60 fps。

import pygame as pg

class Main():
        
    def __init__(self):
        pg.init()
        self.screen = pg.display.set_mode((1000, 1000))
        self.clock = pg.time.Clock()

    def main_loop(self):
        while True:
            self.clock.tick(60)
            print(self.clock.get_fps())
            pg.display.flip()

main = Main()
if __name__ == '__main__':
    main.main_loop()

较大的屏幕尺寸会导致较低的帧速率。

1 个答案:

答案 0 :(得分:1)

<块引用>

较大的屏幕尺寸会导致较低的帧率。

当然,如果您没有超快的计算机,请考虑减小窗口大小。

另外,我认为 1000x1000 对于大多数屏幕来说已经相当大了...所以尝试减小您的游戏的尺寸,例如 900x500 或 640x480,然后使用标签 pygame.SCALED 和 {{ 1}} 将游戏窗口调整为您当前的屏幕大小。

<块引用>

我正在使用 [...] pygame 1.9.3。

考虑更新您的 pygame.FULLSCREEN 版本 - 当我将 pygame 更新为 pygame 1.9.6 时,我的帧率几乎翻了一番。 (+ pygame 2.0.1 和最新版本修复了大量错误,并添加了大量新可能性)

但如果您想要高分辨率和良好的速度,我认为 pygame 2.0.0 是不够的。如果您想创建一般游戏,请考虑使用 Unity 例如。

相关问题