python - 多少面比较合理?

标签 python performance pygame pygame-surface

同时使用多少个pygame.Surface实例才合理?

更准确地说,成本是多少:

  • 在内存中保留一个表面?
  • 将一个表面复制到另一个表面上?

因此,相对于与应用程序相关的其他操作,列表(或任何其他容器)中可以保留多少个表面,以及每帧可以有多少个表面进行位 block 传输?


由于这可能太宽泛,这里是一个具体情况。我想制作一个带有重复图案的动画背景。我希望图案的每个元素都能独立移动,因此我为每个元素使用一个表面。

如果我想显示一百个元素,每个元素使用一个表面是否仍然可以接受?

最佳答案

我制作的游戏中包含超过一万个表面的数组。它运行得很好。你不应该害怕使用大量的表面,疯狂吧。

如果你看过《Don’t Starve》游戏,我正在制作一款类似的游戏。我有十五个不同的生物群落,并且每个生物群落都有多个地砖以供变化。仅此一项就将其推向了 100 多个表面。然后我有一堆不同的植物,比如树木、浆果丛、肉食性快乐植物等。这些植物种类繁多,在某些地方你可以一次加载一百个。同样,这些都有变化。我还有很多移动的实体,比如巨型蜘蛛之类的东西。某些类型的实体需要一百多个表面,只是为了实现其各种可能的 Action 可能发生的所有动画。

总而言之,我可能一次最多显示一千个表面,并且加载了两万多个表面。游戏运行得很好,甚至可以以 60 fps 的速度运行;但正如预期的那样,并非没有广泛使用线程。

结论:假设没有限制,因为也可能没有限制。

关于python - 多少面比较合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924479/

相关文章:

python - Mac 上适用于 Python 3.2 的 Pygame - 导入错误

python - 如何从Python中的特定键获取特定值

python - 两种 ODE 求解器之间的差异

java - 需要打印调用时使用的函数的实际参数名称

java - 在性能方面,每次调用给定数组的长度还是将长度存储在变量中并每次调用该变量更好?

python - 如何使用 PyGame 淡出和返回屏幕?

python - pygame 将图像的透明部分传输为白色

python - 使用 LLVMlite 在 LLVM 中断言失败

python - 创建非冗余相关矩阵Python最有效的方法?

c# - 静态与实例方法性能 C#