Pygame PixelArray独立像素修改

2024-06-28 10:47:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Pygame和Cython制作3d游戏,但是单独修改像素阵列的每个像素非常慢(在400*400像素阵列上需要60毫秒)。 我用这条线修改像素的颜色:

pixelArray[x,y] = 0xFF00FF

我尝试使用整数而不是十六进制值,但没有明显的区别。 我的更改像素的函数使用上面显示的行:

^{pr2}$

对于PixelArray上的每个像素至少调用一次。在

有没有什么方法可以更快地分别改变每个像素?在

附加信息: 我将python3.4.4与Cython和Pygame一起使用。我想避免使用Numpy。在


Tags: 方法函数信息游戏颜色整数像素pygame
1条回答
网友
1楼 · 发布于 2024-06-28 10:47:40

pygame.PixelArray模块是pygame如何为您提供一种改变曲面像素的方法(或者是pygame.surfarray模块,但这取决于numpy),偏离这一点很可能会导致代价高昂的转换,其成本可能会高于您的收益。在

这是你的选择。在

  1. 使用三维库。Pygame不支持很多3D功能 所以你必须自己创造它们。纯粹地创造它们 python很可能不够快。在
  2. 使用pygame和PyOpenGL。使用显卡进行图形计算要快得多。在
  3. 在大型数值计算中使用numpy。Pygame对numpy有很好的支持,numpy是一个针对大型数据集进行了优化的数值库。在
  4. 改变你的算法。预先计算常量,从内部循环中删除检查,不要使用函数来更改单个像素(您很少只更改一个像素,python中的每个函数调用都会给您带来一些开销)、缓存值(python中对数组的每次访问或成员访问开销),以及可能尝试将数据分块分配给像素数组(因为每个赋值都需要转换数据)。这样做可能会加快速度。在
  5. 使用C/C++代替。Python很棒,但也有其局限性。如果你不想在没有第三方的情况下创建一个60帧的第三方游戏库,那么Python就不够了。在

相关问题 更多 >