回答:
全画面モードで実行している場合はpygame.HWSURFACE
、ディスプレイを初期化するときにフラグを使用して、pygameにハードウェアサーフェスを使用するように指示できます。ハードウェアサーフェイスが使用できない場合、pygameはソフトウェアサーフェイスを静かに使用すると思います。
あなたは、ハードウェアの面を使用していない場合は、使用することを検討pygame.display.update(rectangle)
するのではなくpygame.display.flip()
。これにより、ディスプレイ全体ではなく、指定された長方形のみが更新されます。ゲームが実際にディスプレイ全体を更新する必要がない限り、パフォーマンスはかなり向上します。
ハードウェアまたはOpenGLサーフェスを使用している場合は、ハードpygame.DOUBLEBUF
ウェアダブルバッファリングを使用するものもあります。つまり、描画関数は2つのバッファーのいずれかに描画し、flip()
表示されているバッファーを入れ替えます。
talljoshの答えに加えて、私はさらにいくつかの提案を投げ入れたいと思います:
可能な限り回転とスケーリングを避けてください。そのような操作は純粋にCPU上で行われ、非常に遅くなる傾向があります。
直接ピクセル読み取り/変更を行う場合は、Surface.get_buffer()
メソッドを使用するのではなく、Surface.set_at()/get_at()
メソッドを使用して操作します。
信じられないほど簡単なことの1つは、psycoを使用することです。それがどれだけ役立つかわかりませんが、必要なのは
import psyco
psyco.full()
実行を開始するには、試してみるのもよいでしょう。