Partilhar via


Coordenadas de textura geradas automaticamente (Direct3D 9)

O sistema pode usar a posição de espaço da câmera transformada ou o normal de um vértice como coordenadas de textura, ou pode calcular os três vetores de elemento usados para abordar 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 geradas pelo sistema podem ser usadas com transformações para produzir efeitos especiais. É claro que esse é um recurso de finalidade 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 do estágio de textura (do tipo enumerado D3DTEXTURESTAGESTATETYPE ) controla como o sistema gera coordenadas de textura.

Normalmente, esse estado instrui o sistema a usar um conjunto específico 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 que você atribui a esse estado, o comportamento do sistema é bem diferente. Se qualquer um 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 de cada sinalizador 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 de 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 de textura de entrada para esse 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 esfera usa um mapa de textura pré-compilado (no momento do 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 o estado de renderização D3DTSS_TCI_CAMERASPACENORMAL, que usa o normal do vértice no espaço da câmera e o coloca em 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)