gpt4 book ai didi

python - 如何优化pygame中的图 block 渲染?

转载 作者:行者123 更新时间:2023-12-01 05:52:55 33 4
gpt4 key购买 nike

我正在制作一个基于图 block 的游戏,并且需要每帧渲染 map 。现在,每个图 block 为 32X32,可见 map 为 28X28 个图 block 。表现很糟糕。我最近让它只渲染可见的图 block ,但这仍然没有太大提高 FPS。现在我正在寻找一种加快渲染速度的方法。我将速度缓慢归因于我的渲染方式;每个图 block 都单独传输到屏幕上。这样做会更有效吗?

最佳答案

在 pygame 中(据我所知),更新屏幕始终是一个瓶颈。由于我看不到您的代码,我不知道您如何更新屏幕。仅传输发生变化的 Sprite 是一个开始,但您只需要更新屏幕上发生变化的部分。基本上,这是使用 display.flip() 或仅使用更改后的矩形的 update_rects() 之间的区别。我知道,当您滚动 map 时,这根本没有帮助。 看看这个问题:Why is this small (155 lines-long) Pacman game on Python running so slow? ,它有一个类似的主题。

当我编译了一张由图 block 和一些 Sprite 组成的 map 时,我尝试过一件事,我尝试始终为包含当前显示部分和周围大约 200 个像素的区域提供 map 的预编译图像,这样我可以位 block 传输准备好的“地面”(仍然仅在更新的部分),而不需要位 block 传输其中包含的所有瓷砖。当然,您必须对此进行一些思考,特别是如果您有多个图层和 map 的一部分可以位于事件 Sprite 上方。思考和解决这个问题很有趣,但我无法告诉你,你会从中获得多少 yield 。

一个完全不同的可能解决方案:我从 pygame 开始一次(因为我之前用 C++ 做过 SDL)。最近我被引导到另一个Python游戏库:pyglet 。这不会像 pygame 那样受到更新整个屏幕的问题(我认为这是因为使用了 OpenGL 加速;它仍然适用于我根本没有加速的 eee-Netbook)。如果您没有以任何方式绑定(bind)到 pygame,那么看看 pyglet 可能会很有趣。

关于python - 如何优化pygame中的图 block 渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554817/

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