【发布时间】:2012-07-05 17:23:04
【问题描述】:
我正在用 python 编写一个简单的程序,它通过串口接收数据并更新屏幕。
因为我希望这个程序在它运行的任何计算机上看起来都一样,并且它需要全屏,所以我想在一个小的 640、480 窗口中绘制所有内容,然后在我每次更新框架时将其缩放到全屏窗口。
这使我可以将文本等的所有偏移量保持相同。事实证明这真的很慢。
以下是代码的重要部分:
window = pygame.display.set_mode((1920, 1080),pygame.FULLSCREEN)
screenPrescaled=pygame.Surface((640,480))
clock=pygame.time.Clock()
while iterations<400:
#Blit all the stuff to the prescaled surface here
screenPostscaled=pygame.transform.scale(screenPrescaled,(1920, 1080))
window.blit(screenPostscaled,(0,0))
pygame.display.flip()
iterations+=1
clock.tick(40)
这比40fps 慢很多。
屏幕上的所有内容都是文本或线条,没有加载任何图像。 我怀疑我在做一些愚蠢的事情。
我知道我只能更新“脏矩形”,但我想知道我是否遗漏了一些更基本的东西。
提前致谢!
【问题讨论】:
-
扩展会很慢,所以你不希望每个循环都这样做。此外,您可以定义屏幕百分比的偏移量,就像在 OpenGL 中一样。无论分辨率如何,SVG 图形都会缩放。
标签: python pygame scaling frame-rate