るびまサンプルっていうかDXRuby改良

昨日のるびまサンプルの記事で、Intel845を使ったPCで動かないという指摘を頂いた。
ずっと前に945搭載ノートで動かないというのがあって、あのときはハードウェア頂点シェーダを使う設定になっていたせいで、DirectXリファレンスラスタライザを使うモードになってしまっていたのだと思う。
単純にバグなわけだが、リファレンスラスタライザはSDKをインストールしてないと動かないうえに大変遅い。
SDKをインストールしていない環境ではエラーで起動できない。
そういうことでハードウェア頂点シェーダが無い環境ではソフトウェア頂点シェーダを使うように修正したわけだが、今回はそれとは別件だ。


CreateDeviceのエラーのようなので、そのパラメータをチェックしてみた。
ほとんど「使わない」の設定だから特に何もないのだが、バックバッファにA8R8G8B8を指定しているのが怪しい。
検索してもそのあたりの情報はうまく出てこないが、とりあえずバックバッファにα付フォーマットは指定してはいけないらしい。
新しい環境では動いてるし、DirectXにはバックバッファのα値を利用してブレンドする機能もあるみたいだから、ダメってことは無いのだろうが、古いPCでは動かないものなのかもしれない。
んで、ウィンドウモードの場合のフォーマットをUNKNOWN、すなわち画面と同じモードとするようなコードに修正してみた。


ということで、こういうテストはほんとは自分でできるのが一番いいのだが、なんせ手元にないからバグも出るわけで、開発中のDXRuby1.0.5βを組み込んだスターターキット付きでるびまサンプルを再アップした。
http://dxruby.sourceforge.jp/files/rubima_sample_dxruby105beta.zip
不具合修正に協力してやろう!っていう人はこれを動かしてみてほしい。
んで、前のんが動かなくて今回のを動かした人は結果を教えてほしい。
だって結果がわからんかったら意味ないし・・・。


ちなみにDXRubyの一番はじめはうちのi815搭載PCで動いていたはずで、なんで動かなくなってるんだろうと思ってSVNで古いソースの差分をチェックしていたら、はじめはUNKNOWNになっていたのに0.0.7でA8R8G8B8に変えていたorz
たしか理由はナゾなUNKNOWNじゃなく、何かしらのフォーマットを指定しとかないと!って思ったからだとか、テクスチャをA8R8G8B8で持ってるからバックバッファへの書き込みも同じほうが速い!とかなのだが、とりあえず不具合が無い限りは基本部分の修正は控えるようにしていかなければならないだろう。