fc2ブログ

マルチストリーム & インデックス付き頂点ブレンディング

今日はストリームを複数使ったインデックス付き頂点ブレンディング
やってみました。

-------------------------------------------
【1】複数のストリームを使った描画
【2】インデックス付き頂点ブレンディングのやり方
【3】DrawIndexedPrimitive関数の使用

-------------------------------------------

過去に上記の3つをやった訳ですが、今回のは
これら全てを組み合わせたプログラムとなっております。
(応用編みたいな感じですね)


ついでに、何でDrawIndexedPrimitive関数を使うかと言うと、
メタセコイアで3Dモデルを作成し、
RokDeBone2でモーションを付加したXファイルを見てみたところ、

なんか
---------------------------------------------------------------------
DrawIndexedPrimitive関数で楽に描画出来るように
Xファイルが修正されてるっぽい

---------------------------------------------------------------------
事が分かったためです。
※何がどう修正されているかは、また後日記事にしてまとめてみようと思う。


しかし、Xファイルというのは厄介ですね。
-------------------------------------
Frameがあったり無かったり、
Animationがあったり無かったり、
Meshの頂点情報(法線、UV座標とか)が色々違ったり

-------------------------------------
とか、もう 種類が多すぎ。
どんなXファイルを読み込ませても動く様にさせる為には結構大変かも。、

・・・というか、DirectX10ではXファイルのサポートが無くなってるらしいですね。
やっぱり3Dモデルの独自形式を作ったほうが良いような気も。

かといって、それはそれで更に大変なので
ひとまずXファイルが動くプログラムを作ろうと思います。



では、今回のプログラムの具体的な手順を書こうと思います。
----------------------------------------------------------------------------------
【1】構造体を定義する。
【2】それぞれの構造体のバッファを作成。
【3】インデックス(頂点を結びつける順番)のバッファを作成。
【4】ストリームに送るデータを、D3DVERTEXELEMENT9で定義。
【5】CreateVertexDeclaration関数で、頂点宣言を作成。
【6】SetStreamSource関数で、各構造体のバッファをセット。
【7】SetIndices関数で、インデックスをセット。
【8】SetVertexDeclaration関数で、作成した頂点宣言をセット。
【9】行列をセットした後、DrawIndexedPrimitive関数で描画。
【10】バッファなどを全て開放して終了。

----------------------------------------------------------------------------------

一連の流れは大体こんな感じですね。
難しい内容は無いと思うので、多分 問題は無いと思います。

↓ソースコードはこちら。

【ソースコード】Sample_Multi_And_IndexedBlending.txt
スポンサーサイト



テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント
コメントの投稿
管理者にだけ表示を許可する