質問

私は(Debianの/レニー上)pygameのでプレーしてきました。 それは迷惑なブリットの裂け(フルスクリーンまたはウィンドウモード)を除いて、うまく動作しているようです。

私は、デフォルトSDL X11のドライバを使用しています。グーグルは、それはX11が(でもFULLSCREEN|DOUBLEBUF|HWSURFACEフラグで作成された表示で)何VSYNC施設を提供していない、と私は代わりに「DGA」ドライバを使用する必要があることSDLの既知の問題だということを示唆している。

ただし、実行されている。

SDL_VIDEODRIVER=dga ./mygame.py

とpygameの初期化にスロー

pygame.error: No available video device

(現在のXFree86-DGA拡張を示すxdpyinfoにもかかわらず)。

ですから:涙フリーvsyncedフリップを得るためにトリックは何ですか?どちらのこのDGA事の作業や他のいくつかのメカニズムを取得することにより、?

役に立ちましたか?

解決

さて、私の最終的な解決策は、pygameのよりもはるかに良いOpenGLをサポートするように思われ、 Pyglet のに切り替えることで、任意のちらつきの問題を持っていません。

他のヒント

最小限に引き裂く維持するための最良の方法は、可能な限り、画面の周波数に近いあなたのフレームレートを維持することです。あなたはそれを介してOpenGLを実行している場合を除きSDLライブラリは、VSYNCを持っていないので、唯一の方法は、フレームを自分で評価近似することです。 素敵なものの、それが動作するときSDLハードウェアのダブルバッファは、保証されません。私はめったにアクションでそれを見てきました。

SDLとの私の経験では、完全に裂けを排除するためにOpenGLを使用する必要があります。それはように、調整の少しですが、シンプルな2Dテクスチャを描画すると、すべてが複雑ではありません、あなたは回転のように実装することができるしている他のいくつかの追加ボーナスを取得するには、スケーリング、ブレンドしています。

それでもソフトウェアレンダリングを使用する場合は、

しかし、私は汚い四角形の更新を使用してお勧めします。また、に慣れるには少し難しいですが、それはそれが簡単にペースへの更新を維持することがあり、処理の負荷を保存し、(あなたがプレイエリアや何か全体をスクロールしている場合を除き)それはtearedされている画面全体を回避することができます。だけでなく、それがバッファに描画するのにかかる時間は裂けの原因である、画面を更新している間に起こってブリッティングを回避することができる最小値である。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top