【问题标题】:Pygame: Blitting a moving background creates too much blurPygame:对移动的背景进行 Blitting 会造成过多的模糊
【发布时间】:2009-12-09 04:38:15
【问题描述】:

我想要做的是创建一个视口来查看背景的一小部分。 (然后放入精灵)。

但是我注意到的问题是,当它开始移动时,似乎存在背景模糊的问题。我不确定这是因为 blitting 很慢还是因为代码中的问题。我正在寻找其他人如何使用 blit 或创建滚动背景的示例,并找到了这篇文章:Scrolling Games

我使用了他们的简单示例,果然当你滚动时背景看起来很模糊(也就是用偏移量对背景进行 blit)。我还认为可能是由于某种原因导致 FPS 下降,但它根本没有偏离。我不记得其他 2D 游戏有这样的问题。我知道由于它不断变化,可能会有一些运动模糊。只是想知道我是否可以做些什么来缓解这种情况。有人可以插话我可能遗漏的任何东西吗?我将不胜感激任何反馈或帮助。谢谢

【问题讨论】:

  • 如果您在此处澄清“模糊”的含义,将会有所帮助。我怀疑你得到的东西看起来像大多数人所说的“运动模糊”,因为这需要混合像素颜色。您是否收到闪烁或生涩的更新?您是否正在“撕裂”,即看到一帧的上半部分和前一帧的下半部分?您是否看到多个帧的一部分,但它们之间没有清晰的界限?

标签: python pygame sprite blit


【解决方案1】:

我不知道是什么导致了您遇到的问题,但我猜这与双缓冲有关。

您是否至少使用了两个表面?

# 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()

如果直接在屏幕表面上绘制图像,则会发生闪烁。

【讨论】:

    【解决方案2】:

    “模糊”是指背景看起来“加倍”吗?移动正常大小(例如 64x64)的精灵时,你会得到相同的效果吗?

    如果您看到双倍,则可能是刷新率问题。打开 vsync 可能会有所帮助。

    您获得的帧速率是多少?

    如果您将动画放慢到 10 FPS 左右,您是否也会遇到同样的问题?

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 2018-02-13
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2013-10-19
      相关资源
      最近更新 更多