Share via


D3DFVF

D3DFVF

FVF 定数

柔軟な頂点フォーマット (FVF) は、単一のデータ ストリームにインターリーブされて格納されている頂点の内容を記述するために使われる。FVF コードは、通常、固定機能の頂点処理によって処理されるデータを指定するために使われる。

頂点のフォーマットは、次のフラグによって記述される。頂点フォーマットについては、「頂点フォーマット」を参照すること。

頂点データ関連のフラグ

#define 説明
D3DFVF_DIFFUSE 頂点フォーマットがディフューズ色成分を含む。
D3DFVF_NORMAL 頂点フォーマットが頂点法線ベクトルを含む。このフラグを、D3DFVF_XYZRHW フラグと共に使うことはできない。
D3DFVF_PSIZE 頂点フォーマットはポイント サイズで指定されている。このサイズは、トランスフォーム済みでもライティング済みでもない頂点に対してはカメラ空間単位で、またトランスフォーム済みでライティング済みの頂点に対してはデバイス空間単位で表されている。
D3DFVF_SPECULAR 頂点フォーマットがスペキュラ色成分を含む。
D3DFVF_XYZ 頂点フォーマットが未トランスフォーム頂点の位置座標を含む。このフラグを、D3DFVF_XYZRHW フラグと共に使うことはできない。
D3DFVF_XYZRHW 頂点フォーマットが、トランスフォームされた頂点の位置座標を含む。このフラグを D3DFVF_XYZ フラグまたは D3DFVF_NORMAL フラグと共に使うことはできない。
D3DFVF_XYZB1 ~ D3DFVF_XYZB5 頂点フォーマットは、位置座標データ、および複数の行列による頂点ブレンディング処理用の重み (ベータ) 値の対応数を含む。現在、Microsoft® Direct3D® では最大 3 つの重み値および 4 つのブレンディング行列でブレンディングが可能である。ブレンディング行列の使い方の詳細については、「インデックス付き頂点ブレンディング」を参照すること。
D3DFVF_XYZW 頂点フォーマットが、トランスフォームおよびクリッピングされた x,y,z w データを含む。ProcessVertices は、クリッパーを起動しないで、データをクリップ座標で出力する。この定数は、プログラム可能な頂点パイプラインでの使用を目的とした定数で、プログラム可能な頂点パイプラインでしか使わない。

テクスチャ関連のフラグ

#define 説明
D3DFVF_TEX0 - D3DFVF_TEX8 この頂点に対応するテクスチャ座標セットの番号。これらのフラグに対応する数字は連続番号になっていない。
D3DFVF_TEXCOORDSIZEn(coordIndex) テクスチャ座標データ セットを定義する。n はテクスチャ座標のディメンジョンを示す。coordIndex はテクスチャ座標のインデックス番号を示す。「D3DFVF_TEXCOORDSIZEn」および「テクスチャ座標」を参照すること。

マスク値

#define 説明
D3DFVF_POSITION_MASK 位置座標ビットを抽出するマスク。
D3DFVF_RESERVED0、D3DFVF_RESERVED2 柔軟な頂点フォーマットの予約ビットを抽出するためのマスク値。使用不可。
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 と宣言されているとする。weight および MatrixInidices が beta[] に含まれている。D3DFVF_LASTBETA_UBYTE4 は最後の DWORD (beta[5]) を UBYTE4 と解釈することを示している。

最後のベータは、位置フォーマット内のベータの数ではなく、D3DRS_VERTEXBLEND によって決まる。たとえば、D3DRS_VERTEXBLEND が D3DVBF_2WEIGHTS で位置フォーマットが上のとおりである場合、最後のベータは beta[2] になり、これが 4 バイト インデックスで DWORD として使われる。

D3DFVF_TEXCOUNT_SHIFT 頂点のテクスチャ座標数を識別する整数値を何ビット分シフトするかを示す数。この値は、たとえば次のように使う。
DWORD dwNumTextures = 1;  // Vertex has only one set of coordinates.

// Shift the value for use when creating an 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

関連項目