誰も記事を水増ししたいわけではありませんのであしからず。
いつもの通りこのページで公開をしています。
昨日更新を行った後妙に気がかりだった
こういう物は風呂に入っているなど精神的に考えることが少なくなったタイミングで頭の中で回してみると解決法が別に考えついたりする物です。
よく「アイディアがトイレや風呂で出てくる」とは言いますが、単純労働以外だと気分転換は必要ですね。
とりあえずGDIの描画に関して一定の対応が完了
と言うことにしておきます。GetDC~ReleaseDCの扱いが微妙な物についての修正です。
よく調べ直すとどうも単純に多重に呼び出されていただけだったようなので呼び出しカウントを内部的に保持することで更新タイミングが正しくなるように変更しています。
なお、今回の更新ではGDIの描画時の拡大・縮小作業にDirectXを使う場合と使わない場合で動作がかなり異なっており、
- DirectXを使う場合(Direct3D9、DirectDraw7):デバイスコンテキストが完全に解放された時点でまとめて描画処理
- DirectXを使わない場合(GDI、Software):内部メモリデバイスコンテキストに描画が発行(ゲーム動作としてはウィンドウに描画)されたタイミングでウィンドウへ描画処理
となるようになっています。
このため、片方ではうまく動作するのに片方では動作しないゲームというのも出てくると思います。そのときは手動で頑張って変更してください。