我正在尝试使用Pygame和Cython制作3D游戏,但是分别修改PixelArray的每个像素非常慢(400 * 400 PixelArray需要60 ms)。 我正在使用此行来修改像素的颜色:
pixelArray[x,y] = 0xFF00FF
我尝试使用整数而不是十六进制值,但没有明显的区别。 我更改像素的功能使用上面显示的行:
cdef void paint_pixel(zArray,pixelArray,int x,int y,int z,color):
if x < len(zArray) and y < len(zArray[0]):
if (not x < 0) and (not y < 0):
if zArray[x][y] > z or zArray[x][y] == -1:
zArray[x][y] = z
pixelArray[x,y] = 0xFF00FF
对于PixelArray上的每个像素,至少会调用一次。
有没有办法更快地分别更改每个像素?
其他信息: 我使用Python 3.4.4与Cython和Pygame。我想避免使用Numpy。
答案 0 :(得分:0)
pygame.PixelArray
模块是pygame如何为您提供一种改变曲面像素(或pygame.surfarray
模块但依赖于numpy)的方法,并且偏离该模块很可能会导致在昂贵的转换中,可能比你获得的成本更高。
以下是您的替代方案。