【发布时间】:2012-11-12 23:08:32
【问题描述】:
我最近开始从 pygame 进入 pyglet 和 rabbyt,但我遇到了一些难题。
我创建了一个基本示例,其中一个 Sprite(在 pyglet.sprite.Sprite 中找到的类型)以每秒 60 帧的速度显示。问题是这个简单的程序不知何故占用了 50% 的 CPU 时间。我用在 rabbyt 库中找到的 sprite 类型重复了实验,结果相同。
我决定以每秒 60 帧的速度渲染 1000 个精灵,然后是 10000 个精灵,令我惊讶的是 CPU 使用率保持在 50%。唯一的问题是移动或动画精灵会导致轻微的卡顿。
最后,我尝试以每秒 360 帧的速度运行。结果相同,使用率为 50%。
这里是示例代码:
import pyglet
import rabbyt
def on_draw(dt):
window.clear()
spr.render()
global window
window = pyglet.window.Window(800, 600)
spr = rabbyt.Sprite('ship.png')
spr.x = 100
spr.y = 100
pyglet.clock.schedule_interval(on_draw, 1.0/60.0)
if __name__ == '__main__':
pyglet.app.run()
我正在使用带有 ATI HD 3500 卡的 Core 2 Duo。
感谢任何建议/想法。
【问题讨论】:
-
...您是否尝试过损坏位图?
-
不,我实际上不知道损坏 blitting。你能给我指出一些关于它的文档吗?
-
不是真的,但也不是很难;只需在精灵的旧位置绘制背景,然后在新位置绘制精灵。
-
另外,
global声明不是必需的。无论如何,它不会在函数或方法之外做任何事情。 -
我在几分钟前尝试了你的建议,我看到了同样的表现。
标签: python performance pyglet