gpt4 book ai didi

python - 如何在 pygame 中渲染/blit 文本以获得良好的性能

转载 作者:行者123 更新时间:2023-12-02 19:09:16 25 4
gpt4 key购买 nike

我正在使用 Pygame 开发一个小游戏(作为业余爱好)。在此之前,我从未从事过图形界面工作,并且遇到了一些性能问题。即使在选项菜单中,FPS 似乎也被限制在 110 左右,这听起来可能并没有那么糟糕,但考虑到它只是一个带有一些文本的黑屏,FPS 肯定应该更高。这是其中一个文本框的代码:

font = pygame.font.SysFont("Comic Sans MS", 180)
color = (0,60,20)
screen.blit(font.render("Title", False, color), (480,0))

选项菜单只不过是大约 15 个文本框,这已经导致了 FPS 问题。我渲染或位图传输文本的方式有问题吗?

最佳答案

不要在每个帧中创建pygame.font.Font对象,并且不要在每个帧中渲染文本。在程序开始时或在类的构造函数 (__init__) 中创建一次文本 Surface。只需在每个帧中blit文本Surface即可:

初始化时:

font = pygame.font.SysFont("Comic Sans MS", 180)
color = (0,60,20)
text_surface = font.render("Title", False, color)

每帧一次:

screen.blit(text_surface, (480,0))

如果文本是动态的,它甚至无法预渲染。然而,最耗时的是创建pygame.font目的。至少,您应该避免在每个框架中创建字体。
在典型的应用程序中,您不需要字体和字体大小的所有排列。您只需要几个不同的 font 对象。在应用程序开始时创建多种字体,并在渲染文本时使用它们。例如:

fontComic40  = pygame.font.SysFont("Comic Sans MS", 40)
fontComic180 = pygame.font.SysFont("Comic Sans MS", 180)
# [...]

关于python - 如何在 pygame 中渲染/blit 文本以获得良好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64563528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com