Formatos de coordenadas de textura (Direct3D 9)

As coordenadas de textura no Direct3D podem incluir um, dois, três ou quatro elementos de ponto flutuante para abordar texturas com diferentes níveis de dimensão. Uma textura 1D - uma superfície de textura com dimensões de texels de 1 por n - é abordada por uma coordenada de textura. O caso mais comum, texturas 2D, são abordados com duas coordenadas de textura comumente chamadas de você e v. O Direct3D dá suporte a dois tipos de texturas 3D, mapas de ambiente cúbico e texturas de volume. Os mapas de ambiente cúbico não são realmente 3D, mas são abordados com um vetor de 3 elementos. Para obter detalhes, consulte Mapeamento de ambiente cúbico (Direct3D 9).

Conforme descrito em Códigos FVF de Função Fixa (Direct3D 9), os aplicativos codificam coordenadas de textura no formato de vértice. O formato de vértice pode incluir vários conjuntos de coordenadas de textura. Use o D3DFVF_TEX0 por meio de D3DFVF_TEX8 D3DFVF para descrever um formato de vértice que não inclui coordenadas de textura ou até oito conjuntos.

Cada conjunto de coordenadas de textura pode ter entre um e quatro elementos. Os D3DFVF_TEXTUREFORMAT1 por meio de sinalizadores D3DFVF_TEXTUREFORMAT4 descrevem o número de elementos em uma coordenada de textura em um conjunto, mas esses sinalizadores não são usados por si mesmos. Em vez disso, o conjunto D3DFVF_TEXCOORDSIZEN de macros usa esses sinalizadores para criar padrões de bit que descrevem o número de elementos usados por um determinado conjunto de coordenadas de textura no formato de vértice. Essas macros aceitam um único parâmetro que identifica o índice do conjunto de coordenadas cujo número de elementos está sendo definido. O exemplo a seguir ilustra como essas macros são usadas.

// 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;

Observação

Com exceção de mapas de ambiente cúbico e texturas de volume, os rasterizadores não podem abordar texturas usando mais de dois elementos. Os aplicativos podem fornecer até três elementos para uma coordenada de textura, mas somente se a textura for um mapa de cubo, uma textura de volume ou o sinalizador de transformação de textura D3DTTFF_PROJECTED for usado. O sinalizador D3DTTFF_PROJECTED faz com que o rasterizador divida os dois primeiros elementos pelo terceiro elemento (ou n). Para obter mais informações, consulte Transformações de coordenadas de textura (Direct3D 9).

 

Coordenadas de textura