同时使用多少个pygame.Surface
实例才合理?
更准确地说,成本是多少:
- 在内存中保留一个表面?
- 将一个表面复制到另一个表面上?
因此,相对于与应用程序相关的其他操作,列表(或任何其他容器)中可以保留多少个表面,以及每帧可以有多少个表面进行位 block 传输?
由于这可能太宽泛,这里是一个具体情况。我想制作一个带有重复图案的动画背景。我希望图案的每个元素都能独立移动,因此我为每个元素使用一个表面。
如果我想显示一百个元素,每个元素使用一个表面是否仍然可以接受?
最佳答案
我制作的游戏中包含超过一万个表面的数组。它运行得很好。你不应该害怕使用大量的表面,疯狂吧。
如果你看过《Don’t Starve》游戏,我正在制作一款类似的游戏。我有十五个不同的生物群落,并且每个生物群落都有多个地砖以供变化。仅此一项就将其推向了 100 多个表面。然后我有一堆不同的植物,比如树木、浆果丛、肉食性快乐植物等。这些植物种类繁多,在某些地方你可以一次加载一百个。同样,这些都有变化。我还有很多移动的实体,比如巨型蜘蛛之类的东西。某些类型的实体需要一百多个表面,只是为了实现其各种可能的 Action 可能发生的所有动画。
总而言之,我可能一次最多显示一千个表面,并且加载了两万多个表面。游戏运行得很好,甚至可以以 60 fps 的速度运行;但正如预期的那样,并非没有广泛使用线程。
结论:假设没有限制,因为也可能没有限制。
关于python - 多少面比较合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924479/