Freigeben über


Texturkoordinatenformate (Direct3D 9)

Texturkoordinaten in Direct3D können ein, zwei, drei oder vier Gleitkommaelemente enthalten, um Texturen mit unterschiedlichen Dimensionen 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, kubische Umgebungszuordnungen und Volumentexturen. Kubische Umgebungszuordnungen sind nicht wirklich 3D, aber sie werden mit einem 3-Element-Vektor behandelt. Weitere Informationen finden Sie unter Kubik-Umgebungszuordnung (Direct3D 9).

Wie in 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 bestehen. Die D3DFVF_TEXTUREFORMAT1 durch D3DFVF_TEXTUREFORMAT4 Flags beschreiben die Anzahl der Elemente in einer Texturkoordinate in einem Satz, diese Flags werden jedoch 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 einer bestimmten Gruppe 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;

Anmerkung

Mit Ausnahme von kubischen Umgebungszuordnungen und Volumentexturen können Rasterizer Texturen nicht mit mehr als zwei Elementen adressieren. Anwendungen können bis zu drei Elemente für eine Texturkoordinate bereitstellen, aber nur, wenn es sich bei der Textur um eine Cubezuordnung, eine Volumentextur oder das D3DTTFF_PROJECTED Texturtransformationsflaggen handelt. Das D3DTTFF_PROJECTED Flag bewirkt, dass der Rasterizer die ersten beiden Elemente durch das dritte (oder n)-Element dividiert. Weitere Informationen finden Sie unter Texturkoordinatentransformationen (Direct3D 9).

 

Texturkoordinaten