Microsoft DirectX 9.0 |
Flexible Vertex Format Constants
The flexible vertex format (FVF) is used to describe the contents of vertices stored interleaved in a single data stream. An FVF code is generally used to specify data to be processed by fixed function vertex processing.
The following flags describe a vertex format. For information regarding vertex formats, see Vertex Formats.
Vertex data related flags
#define | Description |
---|---|
D3DFVF_DIFFUSE | Vertex format includes a diffuse color component. |
D3DFVF_NORMAL | Vertex format includes a vertex normal vector. This flag cannot be used with the D3DFVF_XYZRHW flag. |
D3DFVF_PSIZE | Vertex format specified in point size. This size is expressed in camera space units for vertices that are not transformed and lit, and in device-space units for transformed and lit vertices. |
D3DFVF_SPECULAR | Vertex format includes a specular color component. |
D3DFVF_XYZ | Vertex format includes the position of an untransformed vertex. This flag cannot be used with the D3DFVF_XYZRHW flag. |
D3DFVF_XYZRHW | Vertex format includes the position of a transformed vertex. This flag cannot be used with the D3DFVF_XYZ or D3DFVF_NORMAL flags. |
D3DFVF_XYZB1 through D3DFVF_XYZB5 | Vertex format contains position data, and a corresponding number of weighting (beta) values to use for multimatrix vertex blending operations. Currently, Microsoft® Direct3D® can blend with up to three weighting values and four blending matrices. For more information about using blending matrices, see Indexed Vertex Blending. |
D3DFVF_XYZW | Vertex format contains transformed and clipped x,y,z w data. ProcessVertices does not invoke the clipper, instead outputting data in clip coordinates. This constant is designed for, and can only be used with, the programmable vertex pipeline. |
Texture-related flags
#define | Description |
---|---|
D3DFVF_TEX0 - D3DFVF_TEX8 | Number of texture coordinate sets for this vertex. The actual values for these flags are not sequential. |
D3DFVF_TEXCOORDSIZEn(coordIndex) | Define a texture coordinate data set. n indicates the dimension of the texture coordinates. coordIndex indicates texture coordinate index number. See D3DFVF_TEXCOORDSIZEn and Texture_coordinates_and_Texture_Stages. |
Mask values
#define | Description |
---|---|
D3DFVF_POSITION_MASK | Mask for position bits. |
D3DFVF_RESERVED0, D3DFVF_RESERVED2 | Mask values for reserved bits in the flexible vertex format. Do not use. |
D3DFVF_TEXCOUNT_MASK | Mask value for texture flag bits. |
Miscellaneous
#define | Description |
---|---|
D3DFVF_LASTBETA_D3DCOLOR | The last beta field in the vertex position data will be of type D3DCOLOR. The data in the beta fields are used with matrix palette skinning to specify matrix indices. |
D3DFVF_LASTBETA_UBYTE4 | The last beta field in the vertex position data will be of type UBYTE4. The data in the beta fields are used with matrix malette skinning to specify matrix indices. // Given the following vertex data definition: struct VERTEXPOSITION { float pos[3]; union { float beta[5]; struct { float weights[4]; DWORD MatrixIndices; // Used as UBYTEs } } }; Given the FVF is declared as: D3DFVF_XYZB5 | D3DFVF_LASTBETA_UBYTE4. Weight and MatrixInidices are included in beta[], where D3DFVF_LASTBETA_UBYTE4 says to interpret the last DWORD (beta[5]) as type UBYTE4. The last beta is determined by the D3DRS_VERTEXBLEND, not by the number of betas in the position format. For example, if D3DRS_VERTEXBLEND is D3DVBF_2WEIGHTS and you have the position format above, the last beta will be beta[2] will be used as a DWORD with 4-byte indices. |
D3DFVF_TEXCOUNT_SHIFT | The number of bits by which to shift an integer value that identifies the number of a texture coordinates for a vertex. This value might be used as shown below |
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.
The following examples show other common flag combinations.
// 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 );
Header | d3d9types.h |
---|---|
Minimum operating system | Windows 98 |