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 |