STed2いじり(5) Direct2D化

公開:2010-10-21 21:31
更新:2017-09-22 05:39
カテゴリ:sted2,c++,windows,audio

Direct2Dをおさらいしながら、STed2 For Windowsにどう組み込んでいくかソースコードをチラ見しつつ考えている。コメントもほとんどなくあまり親しみのないC言語ベースというのもあって私にとってはとても読みづらいコードであるが、作者の熱意はひしひしと感じられる。やはり1つのアプリケーションを完成させるためには作品にかける「熱意」は必要不可欠なのではないだろうか?とか思わせるコードなのだ。

まずは描画部分をそのままDirect2Dに持っていこうかなと考えているけど、そのままCSTedScreenBaseクラスを継承して描画をDirect2Dで行うのはすこし厳しい。 なんとなくメッセージループとSTed2アプリ本体を別スレッドに分けて実行したらどうだろうとか考えたり。 描画部分はID2D1RenderTarget::BeginDraw()とID2D1RenderTarget::EndDraw()間におさめないといけないのでSTed2アプリからの描画命令はすべて一旦リングバッファに格納して、メッセージループスレッドでWM_PAINTメッセージの時にまとめて書き出すとかしたらどうかなとか考えてみたり。 元ソースはオフスクリーンビットマップに描画してWM_PAINTでBitBltしている。それを模倣すればよいかなとか考えたり。

後は元コードはプロセス単位だと問題ないんだけど、同一プロセス内で複数ウィンドウ編集するなんてことを考慮するとグローバル変数を駆逐したり、クラス化しないといけない部分もあるかなとか思ったり。

あんまり大ぶろしきを広げてもしょうがないので小幅なソースコードいじりで留めたいのだけれど、それでもいろいろとやらないといけないことがありそうだとか思案している今日この頃である。