Compartilhar via


Função D3DXComputeTangentFrame

Compute vetores tangentes, binormal e normais para uma malha.

Sintaxe

HRESULT D3DXComputeTangentFrame(
  _In_ ID3DXMesh *pMesh,
  _In_ DWORD     dwOptions
);

Parâmetros

pMesh [in]

Tipo: ID3DXMesh*

Ponteiro para um objeto de malha ID3DXMesh de entrada.

dwOptions [in]

Tipo: DWORD

Combinação de um ou mais sinalizadores D3DXTANGENT .

Use NULL para especificar as seguintes opções:

  • Emagre o comprimento normal do vetor pelo ângulo, em radianos, subconsulta pelas duas bordas deixando o vértice.
  • Compute coordenadas cartesianas ortogonais das coordenadas de textura UV.
  • As texturas não são encapsuladas em direções U ou V
  • Derivativos parciais em relação às coordenadas de textura são normalizados.
  • Os vértices são ordenados em uma direção anti-horário ao redor de cada triângulo.
  • Use vetores normais por vértice já presentes na malha de entrada.
  • Os resultados serão armazenados na malha de entrada original. A função falhará se novos vértices precisarem ser criados.

Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, o valor retornado será S_OK. Se a função falhar, o valor retornado poderá ser um dos seguintes: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA E_OUTOFMEMORY.

Comentários

Essa função simplesmente chama D3DXComputeTangentFrameEx com os seguintes parâmetros de entrada:

D3DXComputeTangentFrameEx(pMesh, D3DDECLUSAGE_TEXCOORD, 0,   
      D3DDECLUSAGE_BINORMAL, 0, D3DDECLUSAGE_TANGENT, 0, 
      D3DDECLUSAGE_NORMAL, 0, 
      dwOptions | D3DXTANGENT_GENERATE_IN_PLACE,
      NULL, 0.01f, 0.25f, 0.01f, NULL, NULL);

Singularidades são tratadas conforme exigido pelo agrupamento de bordas e divisão de vértices. Se algum vértices precisar ser dividido, a função falhará. O vetor normal computado em cada vértice é sempre normalizado para ter comprimento de unidade.

A solução mais robusta para computação de coordenadas cartesianas ortogonais é não definir sinalizadores D3DXTANGENT_ORTHOGONALIZE_FROM_U e D3DXTANGENT_ORTHOGONALIZE_FROM_V, para que as coordenadas ortogonais sejam computadas de ambas as coordenadas de textura UV. No entanto, nesse caso, se U ou V for zero, a função calculará coordenadas ortogonais usando D3DXTANGENT_ORTHOGONALIZE_FROM_V ou D3DXTANGENT_ORTHOGONALIZE_FROM_U respectivamente.

Requisitos

Requisito Valor
parâmetro
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Confira também

Funções de malha

D3DXComputeTangentFrameEx

D3DXTANGENT