编程语言
首页 > 编程语言> > python-在OS-X上将Cairo Surface转换为Pygame的最快方法

python-在OS-X上将Cairo Surface转换为Pygame的最快方法

作者:互联网

我正在寻找一种在Python中绘制平滑动画的方法.我想使用cairo,部分是因为我喜欢亚像素过滤,部分是因为我熟悉API.我的第一种方法是使用GTK.DrawingArea作为开罗表面的目标.尽管绘图很快,但我找不到任何可靠的方式将显示/缓冲与垂直同步相关联,因此动画变得生涩且不可靠.

我的下一个方法是尝试PyGame.以wiki中的示例为起点,我编写了一些简单的代码来制作各种弹跳球的动画.链接页面上的不同方法分为两类:

>绘制到屏幕外的开罗
ImageSurface,然后使用Numpy
将像素缓冲区转换为Pygame
表面.
>为两个共享相同的内存
表面

第一种方法很烂,因为转换大约需要10ms,这是我在60hz帧中花费的大部分时间.我正在使用2.2Ghz Core2Duo和Nvidia 8400的Macbook-pro上运行代码.时间非常取决于表面的大小,这是针对800×800窗口的.

第二种方法从像素坐标的顺序开始浮出水面.开罗和pygame都坚持他们只能使用RGB像素顺序,并且不支持转换.问题是,当我设置pygame表面时,它使用BGRA像素排序,这完全使我感到困惑.

现在,对于以下问题:

>是否可以更改像素
任一库使用的格式
mac与每个兼容
其他?
>如果不可能的话
    最快的转换方式
    纯粹是用Python?
>如果仍然是最快的Python方式
大部分时间吸吮
框架,然后我该如何连接
一些C代码要做转换?
>根据复杂程度
与C的接口是多少
在那里使用pygame而不是
只是用C编写SDL接口?

.

解决方法:

本教程还可以帮助您:http://www.pygame.org/wiki/CairoPygame

标签:cairo,pygame,python,macos
来源: https://codeday.me/bug/20191209/2097192.html