Texturkoordinatenformate (Direct3D 9)

Texturkoordinaten in Direct3D können ein, zwei, drei oder vier Gleitkommaelemente enthalten, um Texturen mit unterschiedlichen Dimensionsebenen zu adressieren. Eine 1D-Textur - eine Texturoberfläche mit Abmessungen von 1-by-n-Texeln - wird durch eine Texturkoordinate adressiert. Der häufigste Fall, 2D-Texturen, werden mit zwei Texturkoordinaten behandelt, die häufig als Sie und v bezeichnet werden. Direct3D unterstützt zwei Arten von 3D-Texturen: Kubik-Umgebungskarten und Volumentexturen. Kubische Umgebungskarten sind nicht wirklich 3D, aber sie werden mit einem 3-Element-Vektor adressiert. Weitere Informationen finden Sie unter Kubische Umgebungszuordnung (Direct3D 9).

Wie unter Fixed Function FVF Codes (Direct3D 9) beschrieben, codieren Anwendungen Texturkoordinaten im Vertexformat. Das Vertexformat kann mehrere Sätze von Texturkoordinaten enthalten. Verwenden Sie die D3DFVF_TEX0 bis D3DFVF_TEX8 D3DFVF , um ein Vertexformat zu beschreiben, das keine Texturkoordinaten oder bis zu acht Sätze enthält.

Jeder Texturkoordinatensatz kann zwischen einem und vier Elementen enthalten. Die D3DFVF_TEXTUREFORMAT1 bis D3DFVF_TEXTUREFORMAT4 Flags beschreiben die Anzahl der Elemente in einer Texturkoordinate in einer Gruppe, aber diese Flags werden nicht selbst verwendet. Stattdessen verwenden die D3DFVF_TEXCOORDSIZEN Gruppe von Makros diese Flags, um Bitmuster zu erstellen, die die Anzahl der Elemente beschreiben, die von einem bestimmten Satz von Texturkoordinaten im Vertexformat verwendet werden. Diese Makros akzeptieren einen einzelnen Parameter, der den Index des Koordinatensatzes identifiziert, dessen Anzahl von Elementen definiert wird. Im folgenden Beispiel wird veranschaulicht, wie diese Makros verwendet werden.

// This vertex format contains two sets of texture coordinates.
// The first set (index 0) has 2 elements, and the second set 
// has 1 element. The description for this vertex format would be: 
//     dwFVF = D3DFVF_XYZ  | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2 |
//             D3DFVF_TEXCOORDSIZE2(0) | D3DFVF_TEXCOORDSIZE1(1); 
//
typedef struct CVF
{
    D3DVECTOR position;
    D3DVECTOR normal;
    D3DCOLOR  diffuse;
    float     u, v;   // 1st set, 2D
    float     t;      // 2nd set, 1D
} CustomVertexFormat;

Hinweis

Mit Ausnahme von Kubik-Umgebungskarten und Volumentexturen können Rasterizer Texturen nicht mit mehr als zwei Elementen behandeln. Anwendungen können bis zu drei Elemente für eine Texturkoordinate bereitstellen, aber nur, wenn die Textur eine Würfelzuordnung, eine Volumentextur oder das D3DTTFF_PROJECTED Texturtransformationsflag verwendet wird. Das flag D3DTTFF_PROJECTED bewirkt, dass der Rasterizer die ersten beiden Elemente durch das dritte (oder n) Element teilt. Weitere Informationen finden Sie unter Texturkoordinatentransformationen (Direct3D 9).

 

Texturkoordinaten