Formats de coordonnées de texture (Direct3D 9)
Les coordonnées de texture dans Direct3D peuvent inclure un, deux, trois ou quatre éléments à virgule flottante pour traiter les textures avec différents niveaux de dimension. Une texture 1D - une surface de texture avec des dimensions de 1 par n texels - est traitée par une coordonnée de texture. Les textures 2D les plus courantes sont traitées avec deux coordonnées de texture communément appelées vous et v. Direct3D prend en charge deux types de textures 3D, de mappages d’environnement cube et de textures de volume. Les cartes d’environnement cubes ne sont pas vraiment 3D, mais elles sont traitées avec un vecteur à 3 éléments. Pour plus d’informations, consultez mappage d’environnement cube (Direct3D 9).
Comme décrit dans codes FVF de fonction fixe (Direct3D 9), les applications encodent les coordonnées de texture au format vertex. Le format de vertex peut inclure plusieurs ensembles de coordonnées de texture. Utilisez le D3DFVF_TEX0 via D3DFVF_TEX8 D3DFVF pour décrire un format de vertex qui n’inclut pas de coordonnées de texture, ou jusqu’à huit jeux.
Chaque jeu de coordonnées de texture peut avoir entre un et quatre éléments. Les D3DFVF_TEXTUREFORMAT1 par le biais de D3DFVF_TEXTUREFORMAT4 indicateurs décrivent le nombre d’éléments d’une coordonnée de texture dans un ensemble, mais ces indicateurs ne sont pas utilisés par eux-mêmes. Au lieu de cela, le D3DFVF_TEXCOORDSIZEN ensemble de macros utilise ces indicateurs pour créer des modèles de bits qui décrivent le nombre d’éléments utilisés par un ensemble particulier de coordonnées de texture au format de vertex. Ces macros acceptent un paramètre unique qui identifie l’index du jeu de coordonnées dont le nombre d’éléments est défini. L’exemple suivant illustre l’utilisation de ces macros.
// 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;
Note
À l’exception des mappages d’environnement cube et des textures de volume, les rastériseurs ne peuvent pas traiter les textures à l’aide de plus de deux éléments. Les applications peuvent fournir jusqu’à trois éléments pour une coordonnée de texture, mais uniquement si la texture est une carte de cube, une texture de volume ou l’indicateur de transformation de texture D3DTTFF_PROJECTED est utilisé. L’indicateur D3DTTFF_PROJECTED entraîne le rastériseur à diviser les deux premiers éléments par le troisième (ou n) élément. Pour plus d’informations, consultez transformations de coordonnées de texture (Direct3D 9).
Rubriques connexes