【发布时间】:2020-05-19 22:48:08
【问题描述】:
我正在 pygame 中创建一个无限滚动的 2d 太空战斗游戏。我刚刚实现了一个视差星形背景,但我的帧率现在是 30fps。你如何获得更高的性能,我尝试创建 blitting 而不是 draw.circle 和 hwsurface,但不能增加 fps。 Download zip
【问题讨论】:
我正在 pygame 中创建一个无限滚动的 2d 太空战斗游戏。我刚刚实现了一个视差星形背景,但我的帧率现在是 30fps。你如何获得更高的性能,我尝试创建 blitting 而不是 draw.circle 和 hwsurface,但不能增加 fps。 Download zip
【问题讨论】:
我建议您不要像听起来那样动态创建星星背景。而是在开始时创建一个包含它的表面,然后滚动它。将其缠绕在自身上,这样当您越过边缘时,它会从头开始继续。您需要确保两条边缘融合并显得无缝。
然后你可以只将背景的一部分blit到屏幕上,你不会发现它对你的性能有太大影响,而不是一直动态生成它。
事实上,如果你提前做,你可以做一些比圆圈更有趣的事情。你可以做不同大小和亮度(颜色)的星星。甚至可能产生眩光效果。
在 OP 评论后编辑:
根据您的描述,我认为您正在滚动它而不是旋转。如果您正在进行旋转,我假设您使用 pygame.transform.rotate() 进行旋转。如果我需要旋转图像,我过去做过的一件事是再次事先旋转它们并保存它们。如果您只是旋转,那可以很好地工作(即使保存 360 度旋转的图像也不是那么糟糕的记忆),但如果您正在滚动和旋转,那将无法正常工作
【讨论】: