DirectX非サポート環境対策

概要

結構皆知っていると思うが、WindowsではDirectXを不使用に出来る。
デスクトップ右クリック→プロパティ→設定→詳細設定→トラブルシューティングとたどっていって、ハードウェアアクセラレータのレベルを3(左から3つめの目盛)以下に設定すればよい。
こうするとDirectXを使用しているアプリケーションはDirectXが使えなくなるので、DirectXに依存した描画しかしていないアプリケーションだとそもそも画面が表示出来ない。
WitchPaperもそうなる。

検討

一般的にはDirectXで描画できない場合、GDIで描画するという事をやっている模様。
Managed DirectXだったらMicrosoft.DirectX.Direct3D.Font.DrawStringが、TextOutになるなどである。
で、これの実装を考えた場合、面倒くさいというか余計なコードを書くのが嫌だったので、そもそもDirectX側で代替処理はサポートしてるのではないかと一縷の望みを抱きつつ軽く調べてみたがよくわからず。
サポートはしてないかな、と思うことにして、独自実装が必要だという前提の上で記述している。
本前提が覆されるようなら以後の文は全く無意味なので無視してやってほしい。


で、動画系はMedia Playerを筆頭に頑張っている。GDIで描画してしまっているのだ。
動画なんてエンターテイメント系にやられたら、テキストエディタなんてユーティリティ系でやらないわけにもいかなくなるだろう。
やるかな、と思ったのだが、ちょっと待て。Vistaはどういう実装になっている、と思いとどまった。
そもそもVistaは描画系をオールDirectXで行く予定だったのが瓦解したのだから、DirectX無効化したらそもそもVistaはダメだろうという話になる。
が、おそらくセーフモード時の起動などを考慮すれば、CPUパワーだけで描画するタイプもサポートしているのかもしれない。
まあ結局触ってないのでよくわからないというのが結論だろうか。

で、どうしよう

2D描画に関してはDirectXで出来る事はGDIでも出来る。
WitchPaperではBitBlt、TextOutと線描画(LineToかな?)くらいしか使ってないので、若干透明化処理で冗長になるケースはあっても大した手間ではない。
ただしベキ論で言えばやらないべきだと思う。
Vistaの前提環境でDirectXが入ったので、Vistaで最適化された描画アプリケーションはDirectX専用のものだともう。
WitchPaperのような新米エディタは多くの環境をフォローするのではなく、最新の環境に最適化したものを作成し、時代が追いついてくるのを待つべきではないだろうか。
多くの環境をフォローしたり、ユーザービリティに溢れた機能を満載するのは既存のエディタが既にやっているし、先人達に任せるべき領域だろう。
もしVistaで稼動させた後、それが最低限の機能だと認識できたら搭載すればよい。


というのを結論として今回は実装を見送ることにした。
もしやるにしてもWitchPaperでは実装を見送って、AbstractPaperクラスから派生させたDirectX描画のWitchPaperと、GDI描画のOrdinaryPaperを作って、使用元で分ける形にする予定。この方が楽だしね。