2012-01-08 4 views
0

Simple DirectMedia Layerのダブルバッファー画面を使用すると、SDL_UpdateRectを複数回送信した後で1回呼び出すか、SDL_Flipを呼び出す前に複数の画像を1回送信した後に1回呼び出す方が効率的ですか?言い換えれば、SDL_UpdateRectは、のように画面を更新させますか、または単純なDirectMedia Layerに画面の反転時にどの領域を更新する必要があるかを単に伝えますか?どのようにそれは通常ダブルバッファの画面で使用する必要がありますか?ダブルバッファ画面でのSDL_UpdateRectの正確なタイミングと効果は何ですか?

参考として、ここにはSDL_UpdateRectの説明があります。

特定の領域が指定された画面上で更新されていることを確認します。 の四角形は、画面の境界内に閉じ込められなければなりません(クリップなしの場合 が完了します)。

'X'、 'Y'、 'ワット' と 'H' の場合は、すべて0である、SDL_UpdateRectは 画面全体を更新します。

答えて

3

はい、SDL_UpdateRectすぐに画面(または矩形)を更新します。

SDL_UpdateRectSDL_Flipを一緒に使用する必要はありませんが、同じことをしますが異なる方法を行います。 SDL_UpdateRectは、画面の一部だけを更新できます(画面から画面にピクセルをコピーすることで動作します)。SDL_Flipは画面全体をリフレッシュします(フリップバッファで動作します)。

したがって、ダブルバッファーの画面を使用してSDL_UpdateRectを呼び出す必要がない場合は、すべてのブリットの後にSDL_Flipを呼び出してください。

http://www.libsdl.org/docs/html/sdlsetvideomode.html

SDL_Flipバッファを反転し、画面を更新します呼び出します。すべて 描画は、 の瞬間に表示されていないサーフェスで行われます。ダブルバッファリングを有効にできない場合、SDL_Flipは画面全体でSDL_UpdateRectを実行するだけです。

ダブルバッファリングはSDL_HWSURFACESDL_FULLSCREENビデオモードでのみ機能することを忘れないでください。

関連する問題