DXRubyが動かないPCがあった

MSIネットブック
社長のやつなのだが、いない隙に勝手にサンプルシューティングを実行してみたらDirectX Graphicsの初期化でエラーになってコケた。
予想外の結果にびっくりだ。
ATOMプロセッサ使ってる新しいやつだから、まさか動かないとは思わなかった。


とりあえず初期化エラーってことだけはメッセージからわかる。
DirectXの初期化はイマイチよくわかっていなかったのだが、改めてコードを見てみるとこんな流れになっている。
(a)HALとハードウェア頂点シェーダを使う設定で初期化。
(b)失敗したらREFとソフトウェア頂点シェーダを使う設定で初期化。
(c)失敗したらエラー。
イマドキのGPUだったら頂点シェーダぐらい装備してるだろーってなんとなく思っていたからこうなっているわけだが、調べてみるとネットブックチップセットは945シリーズで、945はGMA950を使っていて、こいつはソフトウェア頂点シェーダだということらしい。
Intelチップセットは結構ソフトウェア頂点シェーダを使っているみたいで、そういうPCだと(a)は失敗となりそうだ。
(b)はリファレンスラスタライザを使う設定で、意味は無いのだがなんとなく入っている。
リファレンスラスタライザは完全ソフトウェアエミュレーションで、昔はHELでハードがサポートしていない場合にとりあえず動く用だったのが、DirectX9クラスになるとCPUでは遅すぎて話にならないからエンドユーザーランタイムには入っておらず、SDKが入ってるPCでのみ使えるらしい。
つまり想像するに、ハードウェア頂点シェーダが無くてSDKが入っていないからエラーになっている。
ってことは、Intelの古いチップセット内蔵GPUを使ったPCだと基本的に動かない。
大変だ。


修正するとすれば、(a)HAL+ハード頂点シェーダ、(b)HAL+ソフト頂点シェーダ、(c)エラー、といった感じか。
そーいえばどっかのバージョンでこのへんいじった気がするな・・・。
チップセット内蔵PCで動いてたのはいじる前だったからか。
まあ、とりあえず会社にはSDK入れたPCが無いから、今日修正して明日試してみるか。