WinAPIでキレイに描画する -その1 更新を合わせる-

 WinAPIで何も考えずに描画部分を書いていると*1

「重い」わ「チラつく」わではっきり言って見られてものにはならない…。



 で、これを改善するにはどうすればいいだろうか?

答えは簡単。メインループ部ではなく、ウィンドウの描画タイミングに合わせて描画すればいい。


...
/*
* Windowプロシージャ
*/

LRESULT CALLBACK WindowProc( HWND hWnd, UINT msg,
WPARAM wp, LPARAM lp )
{
switch( msg )
{
...
case WM_PAINT:
// 描画用の処理をまとめた関数
// 引数にデバイスコンテキスタあたりを渡しておくと便利?

Draw();
break;
...
}
...
}
...
具体的にはこんな感じで、描画部分をまとめた関数を別個に作っておいて、

「WM_PAINT」の所で呼んでやればいい。



 ただ、これだけではまだチラついていると思う。

描画のタイミングを合わせたとしても、描画途中の状態が表示されることがあるので、そうなる。



 以降、次回で。




*1:ゲームよろしくメインループに「更新→描画」と書いていると