2009-12-09 58 views
1

我想要做的是创建一个视口来查看背景的一小部分。 (后来把精灵放进去)。Pygame:Blitting移动的背景会造成太多模糊

但是,我注意到的问题是,它开始移动时似乎存在背景模糊的问题。我不确定这是因为blitting缓慢还是由于代码中的问题。我一直在寻找的例子别人如何的blit或创建滚动的背景,发现这篇文章:Scrolling Games

我用自己简单的例子,果然背景出现模糊为您滚动(又名位块传输的背景偏移量)。我也认为这可能是因为任何原因FPS下降,但它根本不会偏离。我不记得像其他2D游戏一样的问题。我知道可能会有一些运动模糊,因为它会不断变化。只是想知道我是否可以做任何事情来缓解这一点。有人可能会对我可能错过的任何东西发出警告吗?我将不胜感激任何反馈或帮助。谢谢

+1

如果您在此澄清“模糊”的含义,这将有所帮助。我怀疑你得到的东西看起来像大多数人会称之为“运动模糊”,因为这会导致混合像素颜色。 你得到闪烁或生涩的更新?你是否在“撕裂”,即看到一帧的上半部分和前一帧的下半部分?你是否看到了多个框架的部分,但它们之间没有一条清晰的界限? – 2009-12-10 15:41:38

回答

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

如果图像直接在屏幕表面上绘制,则发生轻弹。