2008-01-12

[][]DirectXに移植 DirectXに移植 - Nao_uの日記 を含むブックマーク はてなブックマーク - DirectXに移植 - Nao_uの日記 DirectXに移植 - Nao_uの日記 のブックマークコメント

あまりの描画の重さに耐えかねて、新しいビデオカードを買ってしまった。いろいろ迷った挙句、今回はRadeon HD3850搭載のものを購入。Geforce8600は価格的には手ごろだけど性能がやや物足りなそうだったし、8800は発熱や電源周りに不安が残る。自宅用マシンなので普段使うときの消費電力やコストパフォーマンスを考慮して、今回はATIのボードを選んでみた。

導入自体にはトラブルはなかったもののドライバは少し不安定そうな気配で、古いアプリのうちいくつかが正常に動作しなかったけれど、とりあえず今回必要な分に関しては問題なく動いているようなので気にしないことにする。

で、前回作ったものを起動してみたのだけど残念ながら速度はほとんど変わらず。いろいろ設定を変えながら実行して調べてみた結果、どうも動画テクスチャを転送する部分やOpenGLの描画命令の発行などの、純粋な3D描画以外の部分にボトルネックがありそうな気配。

OpenGLの高速化のやりかたはほとんど知らないし、影描画とか特殊なシェーダーとかを使おうと思ったらDirectXのほうが楽なので、とりあえず作ったものDirectXに移植しながらこれまでブラックボックスとして使っていた部分の理解を深めつつ、高速化を試してみることにしてみた。

今回も座標系の違いを吸収するのに大幅に手間取り、ほぼそれだけで半日以上かかってしまったけれど一応移植は完了。ややこしい行列の計算とかはとても苦手なので、手探りで試行錯誤を繰り返しながらムリヤリ実装した。数学嫌い。

速度面ではやはり動画テクスチャをビデオカードに送る部分がネックになっていたようで、DirectXに移植する過程でそのあたりの作りが変わって改善されたため、モデル表示が十分軽ければ常時60fpsで描画できるようになった。

f:id:Nao_u:20080113030726j:image

とりあえず現時点の段階のスクリーンショット

まだ移植したばかりで何も新しい物は入っていないけど、これだけ並ぶと壮観。さすがに新型Radeonだけあって、100人乗っても大丈夫。描画周りの最適化はまだ何もしてないにもかかわらず、これくらいの人数なら30fpsで動く。以前よりも高解像度の動画が使えるので認識精度もいくらか向上し、とても快適。

いろいろ手間取ったせいで予定よりは遅れ気味だけど、これで当面の技術的に問題になりそうな部分はほぼ解決できたはず。次は影かPhysX関連のどちからあたりに手を出してみようかと考え中。