Pygame:移动背景的涂抹效果太模糊

1 投票
2 回答
3857 浏览
提问于 2025-04-15 16:49

我想做的是创建一个视口,用来查看背景的一小部分。(之后还想放一些精灵进去)。

不过我注意到一个问题,就是当背景开始移动时,它会变得模糊。我不确定这是因为绘制速度慢,还是代码里有什么问题。我在找别人是怎么绘制或创建滚动背景的例子,找到了这篇文章:滚动游戏

我用了他们的简单例子,果然在滚动的时候背景看起来模糊(也就是用偏移量绘制背景)。我还以为可能是帧率下降导致的,但实际上帧率一点都没有变化。我记不起来其他2D游戏有过这样的情况。我知道可能是因为背景不断移动而产生了一些运动模糊。我在想有没有什么办法可以缓解这个问题。有没有人能告诉我我可能遗漏了什么?我会很感激任何反馈或帮助。谢谢!

2 个回答

0

你说的“模糊”是指背景看起来像是“重影”吗?当你移动一个正常大小的图像(比如64x64的图标)时,效果也是这样吗?

如果你看到重影,那可能是刷新率的问题。试着开启垂直同步(vsync),可能会有所帮助。

你现在的帧率是多少?

如果你把动画的速度减慢到大约10帧每秒(FPS),问题还会存在吗?

3

我不知道你遇到的问题是什么原因造成的,但我猜可能和双缓冲有关。

你有没有使用至少两个表面?

# preparing two surfaces in __init__()
screen = pygame.display.set_mode((800,600))
background = pygame.Surface(screen.get_size())
background.fill((250, 250, 250))

# called at every step in main loop
# draw images on the background surface
background.blit(image, position)
....

# blit background to screen
screen.blit(background, (0, 0))
pygame.display.flip()

如果直接在屏幕表面上绘制图像,就会出现闪烁现象。

撰写回答