Pygame画圆导致延迟
Pygame Draw Circle Causing Lag
我正在 pygame 中创建无限滚动 2d space 战斗游戏。我刚刚实现了一个视差星背景,但我的帧率现在是 30fps。你如何获得更多性能,我已经尝试创建 blitting 而不是 draw.circle 和 hwsurface,但无法增加 fps。
Download zip
我建议您不要像听起来那样临时创建星星背景。而是创建一个在开始时包含它的表面,然后滚动浏览它。将它缠绕在自己周围,这样当你越过边缘时它会从头开始继续。您需要确保两个边缘融合并无缝显示。
然后你可以将背景的一部分 blit 到屏幕上,你会发现它对你的性能没有太大影响,而不是一直在运行中生成它。
事实上,如果你提前做,你可以做一些比圈子更漂亮的事情。你可以做不同大小和亮度(颜色)的星星。甚至可能是眩光效果。
根据 OP 的评论进行编辑:
根据你的描述,我认为你是在滚动而不是旋转。如果您正在进行轮换,我假设您正在使用 pygame.transform.rotate()
进行轮换。如果我需要旋转图像,我过去做过的一件事是再次旋转它们并保存它们。如果你只是旋转(即使保存 360 度旋转的图像也不是那么糟糕的内存明智),那可以很好地工作,但如果你滚动和旋转,那将不起作用
我正在 pygame 中创建无限滚动 2d space 战斗游戏。我刚刚实现了一个视差星背景,但我的帧率现在是 30fps。你如何获得更多性能,我已经尝试创建 blitting 而不是 draw.circle 和 hwsurface,但无法增加 fps。 Download zip
我建议您不要像听起来那样临时创建星星背景。而是创建一个在开始时包含它的表面,然后滚动浏览它。将它缠绕在自己周围,这样当你越过边缘时它会从头开始继续。您需要确保两个边缘融合并无缝显示。
然后你可以将背景的一部分 blit 到屏幕上,你会发现它对你的性能没有太大影响,而不是一直在运行中生成它。
事实上,如果你提前做,你可以做一些比圈子更漂亮的事情。你可以做不同大小和亮度(颜色)的星星。甚至可能是眩光效果。
根据 OP 的评论进行编辑:
根据你的描述,我认为你是在滚动而不是旋转。如果您正在进行轮换,我假设您正在使用 pygame.transform.rotate()
进行轮换。如果我需要旋转图像,我过去做过的一件事是再次旋转它们并保存它们。如果你只是旋转(即使保存 360 度旋转的图像也不是那么糟糕的内存明智),那可以很好地工作,但如果你滚动和旋转,那将不起作用