ガキはほっといて、C#のメタプログラミングで
VertexDeclarationの自動化を解決させちまおうぜ

C++の静的じゃなくて、AttributeとReflectorを使った動的メタプログラミング

定義部
struct HOGEVertex
{
   [VertexElement(type = DeclarationType.D3DDECLTYPE_FLOAT3 ,usage = Decl
arationUsage.D3DDECLUSAGE_POSITION)]
   Vector3 Position;
   [VertexElement(type = DeclarationType.D3DDECLTYPE_FLOAT2 ,usage = Decl
arationUsage.D3DDECLUSAGE_TEXCOORD)]    Vector2 UV;
...

読み込み部
VertexElement[] ReadFVFAttribute<T>() where T : struct
{
var vertexElements = new List<VertexElement>();
foreach(var fi in typeof(T).GetFields())
{
   foreach(var attr in fi.GetType().GetCustomAttributes(false))
   {
       if (attr.GetType() == typeof(VertexElementAttribute) )
           vertexElements.add(new 略);
...
   result = vertexElements.ToArray();
}