Pygame-从spritesheet中将split或从individual sprite散布到其自身表面的效率更高?

时间:2019-02-17 23:26:52

标签: python pygame

使用pygame,这样做会更有效吗?

  1. 每帧从一个精灵表的一部分拆分一个精灵
  2. 在启动时,将每个精灵从一个Spritesheet散布到其自己的Surface,然后将这些Surface散布化。

两者之间是否存在性能差异?与在启动时使用单个Surface相比,使用第一种方法是否需要更多的绘制调用(即,在启动时是否将这些像素的副本存储在ram / vram中)?

谢谢

1 个答案:

答案 0 :(得分:3)

将图像钝化成一个表面,然后钝化那些表面会更快。

但是它会消耗更多的内存,因为您需要将这些表面保留在内存中的某个位置。

为什么?

当您要从Spritesheet中钝化图像时,最终将在Subsurfing / Clipping Spritesheet表面上,这意味着您需要在该位置上生成另一个表面。但是,此过程不会花费很长时间。

最有可能的性能好处是不值得的,因此我建议您采用最适合的方法。如果您担心性能,请查看内置的CProfile python模块。

VRAM永远不会成为方程式。 pygame.Surface源自SDL_Surface,该语言来自C语言的SDL库。 SDL_Surface主要针对软件渲染,这意味着表面像素存储在标准RAM中。