うぇい・・・やっと頂点バッファの情報の獲得に成功したぜ・・・
やり方は
①とりあえずID3DXMESHを作る
②ID3DXBaseMesh::GetDeclarationを呼ぶ
③②でゲットしたD3DVERTEXELEMENT9を解析する
具体的には・・・(ぶっちゃけMSDNとやらを見たほうが速い)
・GetDeclarationにD3DVERTEXELEMENT9構造体のMAX_FVF_DECL_SIZE(定数)分の配列を渡す
・D3DVERTEXELEMENT9の中身は
typedef struct D3DVERTEXELEMENT9 {
WORD Stream;
WORD Offset;
BYTE Type;
BYTE Method;
BYTE Usage;
BYTE UsageIndex;
} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
こんなかんじ(コピペ)
・なんで配列を渡すかというと、例えばその頂点バッファには「位置」「法線」「色」「テクスチャ座標」「位置」「法線」「色」・・・てな感じでデータが並んでたとすると、「位置」~「テクスチャ座標」で1塊と考えられる
これを、D3DVERTEXELEMENT9的に表すと、
要素0・・・「位置」
要素1・・・「法線」
要素2・・・「色」
要素3・・・「テクスチャ座標」
要素4・・・D3DDECL_END(おわりを表す)
要素5・・・中身なし
残りの要素すべて中身なし
というふうに情報が格納される
・この構造体のメンバー変数1つ1つはMSDNで参照してくだせー
・まとめると、この構造体を見て、欲しい情報を確認する
終わりはD3DDECL_ENDで判別する・・・てな感じだと思う
④ID3DXBaseMesh::LockVertexBufferで頂点バッファーの場所を知り、
⑤ID3DXBaseMesh::UnlockVertexBufferでアンロックする
こういう流れです
もっといいやり方がある気がしなくもない・・・
あと頂点の追加ですが、動的な頂点バッファとインデックス バッファの使い方に書いてあるっぽい
これも参考になりそう(まるぺけ)
なんかリンク多くなったw