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 |
|
Biblioteca |
|
Confira também