D3DFVF

フレキシブル頂点フォーマット定数、つまり FVF コードは、固定機能のパイプラインによって処理される単一のデータ ストリームにインターリーブされる頂点の内容を記述するために使用されます。

頂点データ フラグ

頂点フォーマットは、次のフラグによって記述されます。頂点フォーマットについては、「固定機能 FVF コード (Direct3D 9)」を参照してください。

#define 説明 データの順序と型
D3DFVF_DIFFUSE 頂点フォーマットはディフューズ カラー成分を含みます。 DWORD (順序は ARGB)。「D3DCOLOR_ARGB」を参照してください。
D3DFVF_NORMAL 頂点フォーマットは頂点法線ベクトルを含みます。このフラグを D3DFVF_XYZRHW フラグと一緒に使用することはできません。 float, float, float
D3DFVF_PSIZE 頂点フォーマットはポイント サイズで指定されています。このサイズは、トランスフォームもライティングもされていない頂点の場合はカメラ空間単位で、トランスフォームとライティングがされた頂点の場合はデバイス空間単位で表されます。 float
D3DFVF_SPECULAR 頂点フォーマットはスペキュラ カラー成分を含みます。 DWORD (順序は ARGB)。「D3DCOLOR_ARGB」を参照してください。
D3DFVF_XYZ 頂点フォーマットは、トランスフォームされていない頂点の位置座標を含みます。このフラグを D3DFVF_XYZRHW フラグと一緒に使用することはできません。 float, float, float.
D3DFVF_XYZRHW 頂点フォーマットは、トランスフォームされた頂点の位置座標を含みます。このフラグを D3DFVF_XYZ フラグまたは D3DFVF_NORMAL フラグと一緒に使用することはできません。 float, float, float, float.
D3DFVF_XYZB1 ~ D3DFVF_XYZB5 頂点フォーマットは、位置座標データ、および複数の行列による頂点ブレンディング処理用の加重 (ベータ) 値の対応数を含みます。現在、Direct3D では、最大 3 つの加重値および 4 つのブレンディング行列でブレンディングが可能です。ブレンディング行列の使用方法の詳細については、「インデックス付き頂点ブレンディング (Direct3D 9)」を参照してください。 float が、1 つ、2 つ、または 3 つ。D3DFVF_LASTBETA_UBYTE4 を使用する場合、最後のブレンドの重みは DWORD として処理されます。
D3DFVF_XYZW 頂点フォーマットには、トランスフォームおよび切り取りが実行された (x, y, z, w) データが含まれます。ProcessVertices はクリッパーを起動せず、代わりにクリップ座標でデータを出力します。この定数は、プログラム可能な頂点パイプライン用であり、それ以外では使用できません。 float, float, float, float

テクスチャー フラグ

以下のフラグは、固定機能パイプラインによって使用されるテクスチャー フラグです。

#define 説明
D3DFVF_TEX0 ~ D3DFVF_TEX8 この頂点に対応するテクスチャー座標セットの番号です。これらのフラグに対する実際の値は連続番号になっていません。
D3DFVF_TEXCOORDSIZEN(coordIndex) テクスチャー座標データ セットを定義します。この場合、n はテクスチャー座標の次元を示し、coordIndex はテクスチャー座標のインデックス番号を示します。「D3DFVF_TEXCOORDSIZEN」および「テクスチャー座標とテクスチャー ステージ」を参照してください。

マスク フラグ

以下のフラグは、固定機能パイプラインによって使用されるマスク フラグです。

#define 説明
D3DFVF_POSITION_MASK 位置座標ビットを抽出するマスクです。
D3DFVF_RESERVED0, D3DFVF_RESERVED2 FVF の予約ビットを抽出するためのマスク値です。使用しないでください。
D3DFVF_TEXCOUNT_MASK テクスチャー フラグ ビットを抽出するためのマスク値です。

その他のフラグ

以下のフラグは、固定機能パイプラインによって使用される各種フラグです。

#define 説明
D3DFVF_LASTBETA_D3DCOLOR 頂点の位置座標データの最後のベータ フィールドは D3DCOLOR 型になります。ベータ フィールドのデータは、行列パレット スキニングで行列インデックスを指定するために使われます。
D3DFVF_LASTBETA_UBYTE4 頂点の位置座標データの最後のベータ フィールドは UBYTE4 型になります。ベータ フィールドのデータは、行列パレット スキニングで行列インデックスを指定するために使われます。
// Given the following vertex data definition: 
struct VERTEXPOSITION
{
   float pos[3];
   union 
   {
      float beta[5];
      struct
      {
         float weights[4];
         DWORD MatrixIndices;  // Used as UBYTEs
      }
   }
};

FVF は D3DFVF_XYZB5 | D3DFVF_LASTBETA_UBYTE4 として宣言されます。重みと MatrixIndices は beta[5] に含まれており、D3DFVF_LASTBETA_UBYTE4 によって beta[5] 内の最後の DWORD は UBYTE4 型として解釈されます。

D3DFVF_TEXCOUNT_SHIFT 頂点のテクスチャー座標数を識別する整数値を何ビット分シフトするかを示す数です。この値は、次のように使用することができます。
DWORD dwNumTextures = 1;  // Vertex has only one set of coordinates.
// Shift the value for use when creating a 
//   flexible vertex format (FVF) combination.
dwFVF = dwNumTextures << D3DFVF_TEXCOUNT_SHIFT;
// Now, create an FVF combination using the shifted value.

よく使われるフラグの組み合わせ例を次に示します。

// Untransformed vertex for lit, untextured, Gouraud-shaded content.
dwFVF = ( D3DFVF_XYZ | D3DFVF_DIFFUSE );

// Untransformed vertex for unlit, untextured, Gouraud-shaded 
//   content with diffuse material color specified per vertex.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE );

// Untransformed vertex for light-map-based lighting.
dwFVF = ( D3DFVF_XYZ | D3DFVF_TEX2 );

// Transformed vertex for light-map-based lighting with shared rhw.
dwFVF = ( D3DFVF_XYZRHW | D3DFVF_TEX2 );

// Heavyweight vertex for unlit, colored content with two 
//   sets of texture coordinates.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | 
          D3DFVF_SPECULAR | D3DFVF_TEX2 );

定数情報

ヘッダー d3d9types.h
最低限必要なオペレーティング システム Windows 98

関連項目

固定機能 FVF コード (Direct3D 9), ジオメトリ ブレンディング (Direct3D 9)