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 des textures avec différents niveaux de dimension. Une texture 1D ( surface de texture avec des dimensions de texels de 1 par n ) est traitée par une coordonnée de texture. Le cas le plus courant, les textures 2D, est traité avec deux coordonnées de texture communément appelées vous et v. Direct3D prend en charge deux types de textures 3D: les cartes d’environnement cubique et les textures de volume. Les mappages d’environnement cubiques ne sont pas vraiment 3D, mais ils sont traités avec un vecteur à 3 éléments. Pour plus d’informations, consultez Mappage d’environnement cubique (Direct3D 9).
Comme décrit dans Fixed Function FVF Codes (Direct3D 9), les applications encodent les coordonnées de texture au format de 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 aucune coordonnée de texture, ou jusqu’à huit ensembles.
Chaque jeu de coordonnées de texture peut avoir entre un et quatre éléments. Les D3DFVF_TEXTUREFORMAT1 via les indicateurs D3DFVF_TEXTUREFORMAT4 décrivent le nombre d’éléments dans 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 jeu 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 la façon dont ces macros sont utilisées.
// 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;
Notes
À l’exception des mappages d’environnement cubique et des textures de volume, les rastériseurs ne peuvent pas traiter les textures en utilisant 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 fait que le rastériseur divise 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