とりあえず目的レベルの動きになったので公開です。
このバージョンに関しては完全なAlpha版といったところです。
DirectDrawをDirect3D9でエミュレーション
なぜかこちらの方が早かったです。まあ、これについてはかなり力業が必要なだけで考える必要があまりないのが実情でした。
一応完全可変ウィンドウ状態を実装するための種は実装したのですが、ウィンドウサイズの変更の受け取りとそれに対するサーフェイスの再作成が予想より危ないということでいったん回避です。
そのため、まずはということでDirect3D9でのエミュレーションを実装してみました。
まあ、透明色転送はDirect3D9にはないのでソフトウェア実装と相成りました。
完全なDirectDrawのプログラムであればほぼエミュレーション可
だと思います。まあ、該当したからといって簡単に見た目が変わるわけではないのでどうなっているかわかりづらいとは思います。
うまくいった場合はWindowsVista以上でDirect3D9を使った拡大補間が有効になるので比較してみるとよいと思います。
速度は・・・あまりよくはないと思います。いろいろと無茶をしているので。
Direct3D7以前の資料がまともにない
問題なのはDirect3D7以前を使ってDirectDraw+Direct3Dをやられた場合です。
Direct3D側はまだ実装していないので全く動きません。動かそうとするとプログラム側がエラーを検知すると思います。
さらに問題なのはDirect3Dのバージョンが低くなると資料がない上に互換性もまともにないので実装量が半端ないです。
DirectDrawSurfaceのようにそれぞれが微妙に互換がありreinterpret_castとstatic_castを併用すると上位だけで実装が完了するのとは大違いですね。
動画再生時にDirectDrawを使われるのも
エミュレーションにはオーバーレイ機能を実装していないのでこちらもうまく動きません。
再生に失敗したときはエラーになるはずなのでこれもまあ厳しいですね。
次のバージョンではDirect3D7も対象に
なる予定です。エミュレーションというのも楽ではないですね・・・。
あと、ダウンロードがそれなりにあるのはいいのですが、できれば使用してみた感想や動作報告などをいただけるとうれしいです。
データベースなども内部的に作るのもありだと思いますし・・・。