Box2D + WinRTでゲームを作る (5) – Box2Dの処理結果をDirect3Dで描画する

公開:2013-05-27 14:57
更新:2020-02-15 04:37
カテゴリ:direct2d,シューティングゲーム,directx,media foundation,box2d,windows,c++,audio,ゲーム,windows api,box2d + winrtでゲームを作る,Direct3D,ゲーム製作

Box2Dの処理結果をDirect3Dで描画するため、シェーダー周りをどう作ろうか思案しているところである。実際のゲームではビットマップに置き換わるのだけれども、デバッグの時にシェイプやジョイントを表示できるようにしておけば便利である。頂点シェーダーはBox2Dのシェイプ座標をそのまま受け取り、レンダリング座標への変換を行う。ピクセルシェーダーは色を返すだけの単純なもので済みそうである。

今回は比較的大量(といっても3Dメッシュの表示などからすれば全然たいしたことはないが..)のプリミティブを描画するが、私はこういことをするのは実ははじめてある。Direct3Dも数年前からいじっているけど、私の知識レベルはSDKチュートリアルのテクスチャを貼った立方体を1個表示することができるくらいで、さらに詳細を忘れているというお粗末なものである。立方体1個表示程度だったら、頂点データをあらかじめバッファで持っておいて、それを1回セットすれば表示できる。でもいろいろなものを複数個表示するとなると頂点データを差し替えながら描画しないといけないので工夫が必要である。ふつうこういう場合ってどうやるのかを知るため、 Web上にあるさまざまなチュートリアルなどを見ているところである。まあベースとしているSDKサンプルも参考になるはずなのだが、これは3Dメッシュ描画なので私には敷居が高い。でも将来的にはメッシュ読み込み、表示にもチャレンジしたいのだが。キャラクタのモデリングはおそらくBlenderを使う予定なので、モデルデータを読み込んで動的に2Dビットマップを作れれば理想的なのだが。まあでも今は2Dベースでいっぱいいっぱいだ。

Webを見ているとGPGPUあたりのコンテンツもそこそこある。Box2Dの物理演算もGPUにやらせればもっと高速になるかもしれない。ちょうどベースの数値がfloatだし。まあそんなことができるようになるくらい精通できればなとも思っている。