Cairo 缩小曲面时性能不佳

Cairo 缩小曲面时性能不佳,cairo,Cairo,我正在使用Pycaor编写一个国际象棋游戏,每个棋子是一个512x512ImageSurface。这些碎片需要放大和缩小。当刻度(x或y)小于1.0时,应用程序速度非常慢,只有32块。当“比例”等于或大于1.0时,速度会非常快 我尝试了canvas.set\u antialias(cairo.antialias\u NONE),但没有得到好的结果。我试过cr.set\u scale()和surface.set\u device\u scale(),但性能都很差。是否有任何方法可以更快地缩小规模,

我正在使用Pycaor编写一个国际象棋游戏,每个棋子是一个512x512
ImageSurface
。这些碎片需要放大和缩小。当刻度(x或y)小于1.0时,应用程序速度非常慢,只有32块。当“比例”等于或大于1.0时,速度会非常快

我尝试了canvas.set\u antialias(cairo.antialias\u NONE),但没有得到好的结果。我试过
cr.set\u scale()
surface.set\u device\u scale()
,但性能都很差。是否有任何方法可以更快地缩小规模,但质量可能更低,这是可以接受的


我想在每次调整棋盘大小时都重新创建曲面,在这种情况下使用1.0的比例。但是,当用户调整窗口大小时,它将阻塞。

在cairo上下文中将表面图案设置为源后,执行cairo\u pattern\u set\u filter(cairo\u get\u source(cr),cairo\u filter\u FAST)。我认为这意味着“最近的”被用作缩放算法。

您要将图像曲面绘制到什么样的曲面?是GTK提供的产品吗?如果是这样,您可以尝试使用
cairo\u surface\u create\u similor()
一次来创建512x512曲面(每个棋子)并将图像复制到该曲面。之后,从该相似曲面绘制到目标曲面的速度应该更快。(例如,在X11中:Cairo不再需要上传图像数据,但可以告诉X11服务器在服务器端执行整个操作。)您是对的,更改过滤器使其达到60 FPS。当然,质量要差一些。我想我会在调整窗口大小时使用快速过滤器,并在调整停止后以高质量重新绘制。