我正在寻找一种在Python中绘制流畅动画的方法。我想使用cairo,部分原因是我喜欢亚像素过滤,部分原因是因为我熟悉API。我的第一种方法是使用GTK.DrawingArea作为cairo表面的目标。虽然绘图很快,但我找不到任何可靠的方法将显示/缓冲与垂直同步联系起来,因此动画不稳定且不可靠。
我的下一个方法是尝试PyGame。使用wiki中的示例作为起点,我编写了一些简单的代码来动画各种弹跳球。链接页面上的不同方法分为两类:
第一种方法很糟糕,因为转换大约需要10ms,这是我60hz帧的大部分时间片。我在带有2.2Ghz Core2Duo和Nvidia 8400的Macbook-pro上运行代码。时间非常依赖于表面的大小,这适用于800x800的窗口。
第二种方法来自像素坐标的排序。 cairo和pygame都坚持认为他们只能使用RGB像素排序而不支持转换。问题是,当我设置一个pygame表面时,它使用BGRA像素排序,这完全阻止了我。
现在问题是: