6

我目前正在开发一个应用程序,它使用视频投影仪来创建类似于真实激光的效果。可以在 Youtube 上看到我正在尝试存档的一个非常好的示例

基本上,该应用程序需要绘制各种颜色的简单移动形状。我有一个使用 pycairo 的非常复杂的设置,允许基元通过一组修改器来更改位置、缩放和旋转。这允许很大的灵活性。

不幸的是,pycairo 在画虚线圆方面似乎很慢。我试着画了 30 个这样的圆圈:

# setup, transforms...
# Example color-scheme:
self._colors = [(0.0, 1.0, 0.0)]
# drawing dashes one after another
for count, color in enumerate(self._colors):
    cr.set_dash(dash_len, self._dash_len * count)
    cr.set_source_rgb(color[0], color[1], color[2])

    cr.arc(0, 0, self.radius(), 0, 2 * math.pi)
    cr.stroke()

整个事情看起来像这样。这无法使用 Core2Duo 在 800x600 上维持 25fps。

有没有更快的画圆的方法?质量不是真正的问题。

谢谢你的帮助!

4

1 回答 1

5

Cairo 的目标是高质量渲染 - 它在 2d 事物的静态或准静态渲染中被大量使用。

难怪它会很慢——我想我会在你的位置上做的第一次尝试是使用 pygame + pyopenGL——很抱歉我没有提供一个完整的例子,但这个项目看起来不错开始: http: //www.willmcgugan.com/blog/tech/2007/6/4/opengl-sample-code-for-pygame/

于 2012-10-04T17:46:58.243 回答