Freigeben über


D3DFVF

Flexible Vertex-Formatkonstanten oder FVF-Codes werden verwendet, um den Inhalt von Scheitelpunkten zu beschreiben, die in einem einzelnen Datenstrom verschachtelt sind und von der Pipeline mit festen Funktionen verarbeitet werden.

Scheitelpunktdatenflags

Die folgenden Flags beschreiben ein Scheitelpunktformat. Informationen zu Vertexformaten finden Sie unter Fixed Function 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 Vertex-Normalvektor. Dieses Flag kann nicht mit dem D3DFVF_XYZRHW-Flag verwendet werden. float, float, float, float
D3DFVF_PSIZE Scheitelpunktformat 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. float
D3DFVF_SPECULAR Das Vertexformat enthält eine spiegelförmige Farbkomponente. DWORD in ARGB-Reihenfolge. Siehe D3DCOLOR_ARGB.
D3DFVF_XYZ Das Vertexformat enthält die Position eines untransformierten Scheitelpunkts. Dieses Flag kann nicht mit dem D3DFVF_XYZRHW-Flag verwendet werden. float, float, float.
D3DFVF_XYZRHW Das Vertexformat enthält die Position eines transformierten Scheitelpunkts. Dieses Flag kann nicht mit dem 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 Multimatrix-Vertex-Blending-Vorgänge verwendet werden sollen. Derzeit kann Direct3D mit bis zu drei Gewichtungswerten und vier Mischmatrizen kombiniert werden. Weitere Informationen zur Verwendung von Füllmatrizen finden Sie unter Indizierte Vertexmischung (Direct3D 9). 1, 2 oder 3 Floats. Wenn D3DFVF_LASTBETA_UBYTE4 verwendet wird, wird die letzte Mischgewichtung als DWORD behandelt.
D3DFVF_XYZW 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 konzipiert und kann nur mit verwendet werden. float, float, float, float, float

 

Texturflags

Die folgenden Flags beschreiben Texturflags, die von der Pipeline mit festen Funktionen 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 ein Texturkoordinaten-Dataset. n gibt die Dimension der Texturkoordinaten an. coordIndex gibt die Indexnummer der Texturkoordinate an. Siehe D3DFVF_TEXCOORDSIZEN- und Texturkoordinaten und Texturphasen.

 

Maskierungsflaggen

Die folgenden Flags beschreiben Maskenflags, die von der Pipeline mit festen Funktionen verwendet werden.

#define BESCHREIBUNG
D3DFVF_POSITION_MASK Maskierung für Positionsbits.
D3DFVF_RESERVED0, D3DFVF_RESERVED2 Maskieren Sie Werte für reservierte Bits in der FVF. Darf nicht verwendet werden.
D3DFVF_TEXCOUNT_MASK Maskierungswert für Texturflaggenbits.

 

Sonstige Flags

Die folgenden Flags beschreiben eine Vielzahl von Flags, die von der Pipeline mit festen Funktionen 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 wie folgt deklariert ist: D3DFVF_XYZB5 | D3DFVF_LASTBETA_UBYTE4. Weight und MatrixIndices sind in beta[5] enthalten, wobei D3DFVF_LASTBETA_UBYTE4 angibt, die 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; Vertex hat nur einen Satz Koordinaten.

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

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

 

Beispiele

Die folgenden Beispiele zeigen andere gängige Flagkombinationen.

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

Konstante Informationen

Anforderung Wert
Header d3d9types.h
Mindestbetriebssystem Windows 98

 

Direct3D-Konstanten

Behobene Funktions-FVF-Codes (Direct3D 9)

Geometry Blending (Direct3D 9)