2012-05-09 5 views
2

私はpythonのpygletパッケージを使って簡単な画像表示を書いた。私のLinux laptopでは、コードは期待どおりに動作し、毎秒60フレームを一定に表示していました。Pythonでpygletを使用すると、マウスドラッグするとフレームレートが上昇するのはなぜですか?

私のWindows 7デスクトップ(ただし、@XiとGeForce GTX 550 Ti)では、フレームレートが非常に低く(〜10 FPS以下)なっています。しかし、マウスドラッグイベントがフレームレートを大幅に上げる(60 FPS以上)ため、これはハードウェアの制限ではないと私は考えています。

私はマウスドラッグしていないときにフレームレートが低く、なぜ私は速いのですか?

は、ここで私は、この動作を生成するために使用して単純化されたコードです:

import pyglet 
from pyglet.window import mouse 

image_1 = pyglet.resource.image('1.png') 
image_2 = pyglet.resource.image('2.png') 

fps_display = pyglet.clock.ClockDisplay() 
image_x, image_y = 0, 0 
frame = 0 

window = pyglet.window.Window(image_1.width, image_2.height) 

@window.event 
def on_mouse_drag(x, y, dx, dy, buttons, modifiers): 
    global image_x, image_y 
    if buttons == mouse.LEFT: 
     image_x += dx 
     image_y += dy 

@window.event 
def on_draw(): 
    global frame 
    frame += 1 
    window.clear() 
    if frame%2 == 0: 
     image = image_1 
    else: 
     image = image_2 
    image.blit(x=image_x, y=image_y, 
       height=image.height, 
       width=image.width) 
    fps_display.draw() 

if __name__ == '__main__': 
    pyglet.app.run() 

「1.png」と「2.png」は同一のピクセル寸法を有し、私が見ることができるように、彼らは異なるイメージですフレームの反転。私はpython 2.7.2とpygletバージョン1.2devを使用しています。私は役に立つと思われる追加情報を追加して嬉しいです。私はどんなpygletをしたので、

答えて

1

はしばらくして、いくつかの古いコードを振り返って、私はすべての制御を取るためにサブクラス化pygletウィンドウで

clock.schedule_interval(self.update,1.0/75.0) 
clock.set_fps_limit(75) 

でpygletクロック・セットアップを使用しているようだ見ますupdate rate(updateはtimestepパラメータでゲームの世界を進め、そのウィンドウを無効にするウィンドウメソッドです)。私はpygletに特にそうでなければ通常の "ティッカー"更新レートを保証するものはないと思う。

+0

あなたの答えは、ドキュメントの適切な場所に案内してくれます。http://www.pyglet.org/doc/programming_guide/animation_techniques.html – Andrew

関連する問題