Imageクラスの修正が半分できた

とりあえず、レンダーターゲット化して現在と互換レベルまでできた。
テクスチャのダーティ領域を設定しないと全体の転送をしてしまうから、描画時のロック範囲を狭くしてみたところなぜか異様に遅くなってしまったので、自分でダーティ領域を管理するようにしたら今までより少しだけ速くなった。
SYSTEMMEMで取得したテクスチャを部分ロックすると遅いのは理由がわからないが、全体をロックするとダーティ領域が全体になってしまって結局遅い。
なんとも使えない代物だ。


メモリ消費量はMANAGEDしてた時でもどのみちシステムメモリに取っていたから、ほぼ同じ。
バイスロスト時もおそらくDirectXがやっているであろう処理を自分でやっているだけ。
現時点では起動時の処理が少し重くなってしまっているが、これも解消できる予定だ。
もともとかなりシンプルに作ってあったのだが、ずいぶん複雑になってきてしまった。
そこだけ気がかりだ。
はじめに想定していなかった大掛かりな修正をしようとしているのだから、ある程度はしょうがないのだろうが。


残りはImageオブジェクトに対するハードウェア描画だ。
しかしこれが大変難しい。
フルオプションでの描画をサポートするなら、スプライト構造体と同じもの+描画元・描画先といった情報を持っておいて、必要になったときに描画するような感じだろうか。
通常のWindow.draw系ほど速くはならないが、そんなに酷使するようなこともないのでは、と楽観的に考えておいて、とりあえず作ってみるか。
GetRenderTargetDataが予想外に速かったら嬉しいんだけど。
そんなことは無いんだろうな、やっぱり。