gpt4 book ai didi

python - 替换表面而不是位 block 传送到它

转载 作者:行者123 更新时间:2023-12-01 08:50:18 25 4
gpt4 key购买 nike

我在 pygame 中遇到一些性能问题,因此我正在尝试优化渲染。

目前,我正在将背景图像传输到显示缓冲区:

self.display.blit(self.bg, (0, 0))

相反,我正在寻找一种方法,用背景表面的副本替换缓冲区,并在其上进行绘制。这样,我就不必每帧都传输大图像,从而节省了一些时间。

有什么办法可以做到吗?

最佳答案

将某些内容传输到屏幕表面的频率并不重要,因为只有在调用 pygame.display.updatepygame.display.flip

如果您确定将整个背景图像传输到屏幕表面是游戏中的瓶颈,您可以尝试以下操作:

a) 使用clear(),而不是每帧都位图传输整个背景。函数从屏幕上“删除” Sprite 。

b) 不要在不带参数的情况下调用 pygame.display.flippygame.display.update,而是调用 pygame.display.update屏幕上已更改的区域列表,由 draw() 返回函数(可能与 clear() 结合使用)。

c) 使用 FULLSCREENDOUBLEBUFHWSURFACE 标志创建显示表面。

但正如我已经说过的:确保您知道自己的瓶颈在哪里。一些常见的性能陷阱是:从磁盘多次加载图像、字体渲染、使用不同的像素格式(例如,不在从图像创建的表面上调用 convert/convert_alpha)以及通常的缺乏缓存。

(另请注意,在创建图形要求较高的游戏时,python/pygame 通常不是首选)

关于python - 替换表面而不是位 block 传送到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53154044/

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