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 1-by-n-Texeldimensionen – wird durch eine Texturkoordinate adressiert. Der häufigste Fall, 2D-Texturen, wird mit zwei Texturkoordinaten adressiert, die häufig als Sie und v bezeichnet werden. Direct3D unterstützt zwei Arten von 3D-Texturen: Kubikumgebungszuordnungen und Volumentexturen. Kubische Umgebungszuordnungen sind nicht wirklich 3D, aber sie werden mit einem 3-Element-Vektor adressiert. Weitere Informationen finden Sie unter Kubische Umgebungszuordnung (Direct3D 9).

Wie unter FVF-Codes für feste Funktionen (Direct3D 9)beschrieben, codieren Anwendungen Texturkoordinaten im Scheitelpunktformat. Das Scheitelpunktformat kann mehrere Sätze von Texturkoordinaten enthalten. Verwenden Sie D3DFVF TEX0 bis _ D3DFVF _ TEX8 D3DFVF, um ein Scheitelpunktformat zu beschreiben, das keine Texturkoordinaten oder bis zu acht Sätze enthält.

Jeder Texturkoordinatensatz kann zwischen einem und vier Elementen enthalten. Die Flags D3DFVF _ TEXTUREFORMAT1 bis D3DFVF TEXTUREFORMAT4 beschreiben die Anzahl der Elemente in einer Texturkoordinate in einem Satz, aber diese Flags werden nicht selbst _ verwendet. Stattdessen verwenden die D3DFVF _ TEXCOORDSIZEN-Makros diese Flags, um Bitmuster zu erstellen, die die Anzahl der Elemente beschreiben, die von einem bestimmten Satz von Texturkoordinaten im Scheitelpunktformat verwendet werden. Diese Makros akzeptieren einen einzelnen Parameter, der den Index des Koordinatensets 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 Kubikumgebungszuordnungen und Volumetexturen können Rasterizer Texturen nicht mit mehr als zwei Elementen adressieren. Anwendungen können bis zu drei Elemente für eine Texturkoordinate liefern, aber nur, wenn es sich bei der Textur um eine Cube map, eine Volumetextur oder das D3DTTFF PROJECTED Texture Transform Flag _ handelt. Das D3DTTFF PROJECTED-Flag bewirkt, dass der Rasterizer die ersten beiden Elemente durch das dritte _ Element (oder n) dividiert. Weitere Informationen finden Sie unter Texturkoordinatentransformationen (Direct3D 9).

Texturkoordinaten