Freigeben über


D3DFVF

Flexible Vertex-Formatkonstanten oder FVF-Codes werden verwendet, um den Inhalt von Scheitelpunkten zu beschreiben, die in einem einzelnen Datenstrom interleaviert werden, der von der Pipeline mit fester Funktion verarbeitet wird.

Vertexdatenkennzeichnungen

Die folgenden Flags beschreiben ein Vertexformat. Informationen zu Vertexformaten finden Sie unter FVF-Codes (Direct3D 9).

#define Beschreibung Datenreihenfolge und -typ
D3DFVF_DIFFUSE Das Vertexformat enthält eine diffuse Farbkomponente. DWORD in ARGB-Reihenfolge. Siehe D3DCOLOR_ARGB.
D3DFVF_NORMAL Das Vertexformat enthält einen Vertexnormalvektor. Dieses Kennzeichen kann nicht mit dem D3DFVF_XYZRHW Flag verwendet werden. float, float, float
D3DFVF_PSIZE Vertexformat in Punktgröße angegeben. Diese Größe wird in Kameraraumeinheiten für Scheitelpunkte ausgedrückt, die nicht transformiert und beleuchtet werden, und in Geräteraumeinheiten für transformierte und beleuchtete Scheitelpunkte. schweben
D3DFVF_SPECULAR Das Vertexformat enthält eine glanzliche Farbkomponente. DWORD in ARGB-Reihenfolge. Siehe D3DCOLOR_ARGB.
D3DFVF_XYZ Das Vertexformat enthält die Position eines untransformierten Scheitelpunkts. Dieses Kennzeichen kann nicht mit dem D3DFVF_XYZRHW Flag verwendet werden. float, float, float.
D3DFVF_XYZRHW Das Vertexformat enthält die Position eines transformierten Scheitelpunkts. Dieses Kennzeichen kann nicht mit den D3DFVF_XYZ- oder D3DFVF_NORMAL Flags verwendet werden. float, float, float, float, float.
D3DFVF_XYZB1 bis D3DFVF_XYZB5 Das Vertexformat enthält Positionsdaten und eine entsprechende Anzahl von Gewichtungswerten (Beta), die für Vertexmischungsvorgänge mit mehreren Matrix verwendet werden sollen. Derzeit kann Direct3D bis zu drei Gewichtungswerte und vier Blendungsmatrizen kombinieren. Weitere Informationen zur Verwendung von Mischmatrizen finden Sie unter Indizierten Vertex-Blending (Direct3D 9). 1, 2 oder 3 Floats. Wenn D3DFVF_LASTBETA_UBYTE4 verwendet wird, wird die letzte Mischgewichtung als DWORD behandelt.
D3DFVF_XYZW Das Vertexformat enthält transformierte und abgeschnittene Daten (x, y, z, w). ProcessVertices ruft den Clipper nicht auf, sondern gibt Daten in Clipkoordinaten aus. Diese Konstante ist für die programmierbare Vertexpipeline ausgelegt und kann nur mit dieser verwendet werden. float, float, float, float, float

 

Texturkennzeichnungen

Die folgenden Flags beschreiben Texturkennzeichnungen, die von der Pipeline mit fester Funktion verwendet werden.

#define Beschreibung
D3DFVF_TEX0 - D3DFVF_TEX8 Anzahl der Texturkoordinatensätze für diesen Scheitelpunkt. Die tatsächlichen Werte für diese Flags sind nicht sequenziell.
D3DFVF_TEXCOORDSIZEN(coordIndex) Definieren Sie einen Texturkoordinatendatensatz. n gibt die Dimension der Texturkoordinaten an. coordIndex gibt die Indexnummer der Texturkoordinate an. Siehe D3DFVF_TEXCOORDSIZEN und Texturkoordinaten und Texturphasen.

 

Maskenkennzeichnungen

Die folgenden Flags beschreiben Maskenkennzeichnungen, die von der Pipeline mit fester Funktion verwendet werden.

#define Beschreibung
D3DFVF_POSITION_MASK Maske für Positionsbits.
D3DFVF_RESERVED0, D3DFVF_RESERVED2 Maskierungswerte für reservierte Bits im FVF. Nicht verwenden.
D3DFVF_TEXCOUNT_MASK Maskenwert für Texturkennzeichnungsbits.

 

Verschiedene Kennzeichnungen

Die folgenden Flags beschreiben eine Vielzahl von Flags, die von der Pipeline mit fester Funktion verwendet werden.

#define Beschreibung
D3DFVF_LASTBETA_D3DCOLOR Das letzte Betafeld in den Vertexpositionsdaten ist vom Typ D3DCOLOR. Die Daten in den Betafeldern werden mit Matrixpaletten-Skinning verwendet, um Matrixindizes anzugeben.
D3DFVF_LASTBETA_UBYTE4 Das letzte Betafeld in den Vertexpositionsdaten ist vom Typ UBYTE4. Die Daten in den Betafeldern werden mit Matrixpaletten-Skinning verwendet, um Matrixindizes anzugeben.
// Given the following vertex data definition: 
struct VERTEXPOSITION
{
   float pos[3];
   union 
   {
      float beta[5];
      struct
      {
         float weights[4];
         DWORD MatrixIndices;  // Used as UBYTEs
      }
   }
};

Da der FVF als: D3DFVF_XYZB5 | D3DFVF_LASTBETA_UBYTE4. Gewichtungs- und MatrixIndizes sind in beta[5] enthalten, wobei D3DFVF_LASTBETA_UBYTE4 sagt, das letzte DWORD in Beta[5] als Typ UBYTE4 zu interpretieren.

D3DFVF_TEXCOUNT_SHIFT Die Anzahl der Bits, um die ein ganzzahliger Wert verschoben werden soll, der die Anzahl der Texturkoordinaten für einen Scheitelpunkt angibt. Dieser Wert kann wie unten dargestellt verwendet werden.

              
              DWORD dwNumTextures = 1; Der Vertex verfügt nur über einen Satz von Koordinaten. 

Verschieben Sie den Wert für die Verwendung beim Erstellen einer Kombination aus einem // flexiblen Vertexformat (FVF). dwFVF = dwNumTextures << D3DFVF_TEXCOUNT_SHIFT;

// Now, create an FVF combination using the shifted value.

 

Beispiele

Die folgenden Beispiele zeigen weitere gängige Kennzeichenkombinationen.

// 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 );

Konstanteninformationen

Anforderung Wert
Kopfball d3d9types.h
Mindestbetriebssystem Windows 98

 

Direct3D-Konstanten

FVF-Codes (Direct3D 9) mit fester Funktion

Geometry Blending (Direct3D 9)