在Kivy中快速重绘blit后的纹理

2024-05-20 00:00:38 发布

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

Kivy文档的内容是这样的:对于具有从像素阵列创建和Blit的纹理的矩形,如下所示:

pixels = bytearray([0x00, 0x00, 0x00] * (256 * 192))
texture = kivy.graphics.texture.Texture.create(size=(256, 192),
                                               colorfmt='rgb')
texture.blit_buffer(pixels, colorfmt='rgb', bufferfmt='ubyte')

然后可以用ask_update()调用来更新它,无论关联的画布是什么

问题是,尽管blit_buffer()调用很快就会执行,但下面的ask_update()在性能方面似乎非常昂贵,因此,比方说,在我的机器上,随着就地更新调用,FPS从大约8000降到60。与Cairo相比,更改cairo.ImageSurface的像素数组会导致在不需要额外调用的情况下重新绘制图像,而且执行速度似乎非常快

问题是是否有一种更快的方法来重新绘制Kivy中的blitted像素


Tags: 文档内容buffer绘制updatergb像素ask