Partilhar via


Coordenadas de textura geradas automaticamente (Direct3D 9)

O sistema pode usar a posição de espaço de câmera transformada ou o normal de um vértice como coordenadas de textura, ou pode calcular os três vetores de elementos usados para endereçar um mapa de ambiente cúbico. Como as coordenadas de textura que você especifica explicitamente em um vértice, você pode usar coordenadas de textura geradas automaticamente como entrada para transformações de coordenadas de textura.

As coordenadas de textura geradas automaticamente podem reduzir significativamente a largura de banda necessária para dados de geometria, eliminando a necessidade de coordenadas de textura explícitas no formato de vértice. Em muitos casos, as coordenadas de textura que o sistema gera podem ser usadas com transformações para produzir efeitos especiais. Claro, este é um recurso de propósito especial, e você usará coordenadas de textura explícitas para muitas ocasiões.

Configurando coordenadas de textura geradas automaticamente

Em C++, o D3DTSS_TEXCOORDINDEX estado de estágio de textura (do tipo D3DTEXTURESTAGESTATETYPE enumerado) controla como o sistema gera coordenadas de textura.

Normalmente, esse estado instrui o sistema a usar um determinado conjunto de coordenadas de textura codificadas no formato de vértice. Quando você inclui os sinalizadores D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION ou D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR no valor atribuído a esse estado, o comportamento do sistema é bastante diferente. Se algum desses sinalizadores estiver presente, o estágio de textura ignorará as coordenadas de textura dentro do formato de vértice em favor das coordenadas geradas pelo sistema. Os significados para cada bandeira são mostrados na lista a seguir.

  • D3DTSS_TCI_CAMERASPACENORMAL

    Use o vértice normal, transformado em espaço de câmera, como coordenadas de textura de entrada.

  • D3DTSS_TCI_CAMERASPACEPOSITION

    Use a posição do vértice, transformada em espaço da câmera, como coordenadas de textura de entrada.

  • D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR

    Use o vetor de reflexão, transformado em espaço da câmera, como coordenadas de textura de entrada. O vetor de reflexão é calculado a partir da posição do vértice de entrada e do vetor normal.

Os sinalizadores de índice de coordenadas de textura são mutuamente exclusivos. Este exemplo usa:

  • A posição do vértice (no espaço da câmera) como as coordenadas da textura de entrada para este estágio de textura
  • O modo de encapsulamento definido no estado de renderização D3DRENDERSTATE_WRAP1
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 
                                   D3DTSS_TCI_CAMERASPACEPOSITION | 1);

As coordenadas de textura geradas automaticamente são mais úteis como valores de entrada para uma transformação de coordenadas de textura ou para eliminar a necessidade de seu aplicativo calcular vetores de três elementos para mapas de ambiente cúbico.

O mapeamento de esferas usa um mapa de textura pré-calculado (em tempo de modelo) que contém todo o ambiente conforme refletido por uma esfera cromada. O Direct3D tem um recurso de geração de coordenadas de textura usando D3DTSS_TCI_CAMERASPACENORMAL de estado de renderização, que pega o normal do vértice no espaço da câmera e o coloca através de uma transformação de textura para gerar coordenadas de textura.

Processamento de coordenadas de textura

transformações de coordenadas de textura (Direct3D 9)

Mapeamento de ambiente cúbico (Direct3D 9)