Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame-从精灵表中blit一个精灵更有效,或者blit一个精灵到他们自己的表面更有效?_Python_Pygame - Fatal编程技术网

Python Pygame-从精灵表中blit一个精灵更有效,或者blit一个精灵到他们自己的表面更有效?

Python Pygame-从精灵表中blit一个精灵更有效,或者blit一个精灵到他们自己的表面更有效?,python,pygame,Python,Pygame,使用pygame,是否可以更高效地: 在每个帧中从精灵表的一部分Blit一个精灵 启动时,将每个精灵从精灵表blit到它们自己的曲面,然后blit这些曲面 两者之间有什么性能差异吗?与启动时的单个曲面相比,使用第一种方法是否需要更多的绘制调用(即,启动时是否将这些像素的副本存储在ram/vram中) 谢谢将图像快速拼接到曲面中,然后再快速拼接这些曲面 但是,它会消耗更多内存,因为您需要将这些曲面保留在内存中的某个位置 为什么? 当您从精灵表中blit图像时,最终将对精灵表曲面进行子曲面绘制/剪裁

使用pygame,是否可以更高效地:

  • 在每个帧中从精灵表的一部分Blit一个精灵
  • 启动时,将每个精灵从精灵表blit到它们自己的曲面,然后blit这些曲面
  • 两者之间有什么性能差异吗?与启动时的单个曲面相比,使用第一种方法是否需要更多的绘制调用(即,启动时是否将这些像素的副本存储在ram/vram中)


    谢谢

    将图像快速拼接到曲面中,然后再快速拼接这些曲面

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

    为什么?

    当您从精灵表中blit图像时,最终将对精灵表曲面进行子曲面绘制/剪裁,这意味着您需要在现场生成另一个曲面。然而,这个过程不会花很长时间

    性能优势很可能不值得,因此我建议您选择您最喜欢的方法。如果您关心性能,请查看内置的CProfile python模块

    VRAM永远不会进入这个等式
    pygame.Surface
    源于C编程语言的SDL库中的
    SDL_Surface
    SDL_Surface
    主要针对软件渲染,这意味着表面像素存储在标准RAM中