Python像素操作库

Python像素操作库,python,Python,所以我正在经历用Python制作游戏的开始阶段,我正在寻找一个能够相对快速地操作像素和blit像素的库 我的第一个想法是pygame,因为它处理纯2D曲面,但它只允许通过pygame.get_at(),pygame.set_at()和pygame.get_buffer()进行像素访问,所有这些都会在每次调用时锁定曲面,使它们的使用速度变慢。我也可以使用PixelArray和surfarray类,但它们在其生命周期内是锁定的,将它们点显到曲面的唯一方法是将像素复制到新曲面,或者使用surfarra

所以我正在经历用Python制作游戏的开始阶段,我正在寻找一个能够相对快速地操作像素和blit像素的库

我的第一个想法是pygame,因为它处理纯2D曲面,但它只允许通过
pygame.get_at()
pygame.set_at()
pygame.get_buffer()
进行像素访问,所有这些都会在每次调用时锁定曲面,使它们的使用速度变慢。我也可以使用
PixelArray
surfarray
类,但它们在其生命周期内是锁定的,将它们点显到曲面的唯一方法是将像素复制到新曲面,或者使用
surfarray.blit_array
,这需要创建屏幕的次表面并将其点显到该曲面,如果阵列比屏幕小(如果它更大,我可以使用阵列的一部分,这没有问题)

我对PyOpenGL或Pyglet没有太多经验,但我想知道在Pygame中是否有一个更快的库来进行像素操作,或者是否有一个更快的方法来进行像素操作。我在C中使用SDL和OpenGL做了一些工作,我非常喜欢在我的程序中添加顶点/片段着色器的想法


我的程序将主要处理加载图像和向曲面写入/读取图像。

您尝试过这个程序吗?你仍然需要通过frombuffer或类似的方式将数据传回pygame来进行blitting,但PIL可以处理像素访问。

我查看了pyglet,发现它在图像没有太多操作的情况下,对于静态每像素碰撞非常有效;但是,我不确定它在动态图像中的效果如何

简而言之,我正在寻找一个能够快速显示像素缓冲区的库。该缓冲区将不断变化,因此快速访问和屏蔽至关重要。这可以在C语言中使用SDL相对容易地完成;然而,我正在Python中寻找类似的方法。在这一点上,我甚至不太担心硬件加速,尽管这肯定会很好。

检查。来自:


它实现了相同的2D绘图和OpenGL相关函数(有关详细信息,请参见它们的基类),不同之处在于结果存储在屏幕外纹理中,而不是显示在窗口中

渲染到纹理在多种情况下都很有用:

  • 预计算复杂的静态纹理(如来自多个平铺的关卡背景)
  • 使用着色器将后期效果应用于整个场景
  • 从使用OpenGL渲染的3D对象创建精灵
  • 等等


同时检查方法包含的相交的

是否确实需要每像素写入像素?整体上做这样的事情要快得多。该引擎将被编程为能够复制liero/worms类型的环境,其中每像素操作将是必不可少的。有一种方法可以用一堆向量来实现,但我喜欢像素的简单自由。在C语言中这不会是一个问题,在C语言中我已经有了一些做这类事情的经验,但我想用Python编程。虽然如果我失去了一些基本的功能,我将不得不求助于C语言。这在与numpy的结合中可能特别强大。请尝试以下链接: