さまざまな潜在的な頂点形式に適応する必要があるアプリケーションを作成しています。ロードしているメッシュには、潜在的な頂点属性 (色、法線、テクスチャ座標、重みなど) がいくつあってもなくてもかまいません。
宣言の簡単な例は次のようになります。
D3DVERTEXELEMENT9 simple_decl[] =
{
{0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
{0, 20, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0},
{0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1},
D3DDECL_END()
};
struct MYVERTS
{
float x,y,z,u,v;
DWORD colr;
float nx,ny,nz;
};
基本的に、D3DVERTEXELEMENT9 はオフセットの配列です。各オフセットは、「MYVERTS」のデータ メンバのサイズです。
ユーザーが XYZ 座標と色だけでモデルをエクスポートする場合、3 つの float と 1 つの dword を含む構造体を動的に生成し、オフセットと D3DDECLUSAGE を含む宣言を生成します。
これを行う方法がわかりません。誰かアドバイスはありますか?