D3DXComputeTangentFrameEx fonction)
Effectue des calculs de trame tangente sur une maille. Les vecteurs tangente, Binormal et éventuellement normaux sont générés. Les singularités sont gérées en fonction des besoins en regroupant les bords et en fractionnant les vertex.
Syntaxe
HRESULT D3DXComputeTangentFrameEx(
_In_ ID3DXMesh *pMesh,
_In_ DWORD dwTextureInSemantic,
_In_ DWORD dwTextureInIndex,
_In_ DWORD dwUPartialOutSemantic,
_In_ DWORD dwUPartialOutIndex,
_In_ DWORD dwVPartialOutSemantic,
_In_ DWORD dwVPartialOutIndex,
_In_ DWORD dwNormalOutSemantic,
_In_ DWORD dwNormalOutIndex,
_In_ DWORD dwOptions,
_In_ const DWORD *pdwAdjacency,
_In_ FLOAT fPartialEdgeThreshold,
_In_ FLOAT fSingularPointThreshold,
_In_ FLOAT fNormalEdgeThreshold,
_Out_ ID3DXMesh **ppMeshOut,
_Out_ ID3DXBuffer **ppVertexMapping
);
Paramètres
-
pMesh [ dans]
-
Type : ID3DXMesh*
Pointeur vers un objet de maillage ID3DXMesh d’entrée.
-
dwTextureInSemantic [ dans]
-
Type : DWORD
Spécifie la sémantique d’entrée de la coordonnée de texture. Si D3DX _ default, la fonction suppose qu’il n’y a pas de coordonnées de texture, et la fonction échoue à moins que le calcul de vecteur normal soit spécifié.
-
dwTextureInIndex [ dans]
-
Type : DWORD
Si un maillage a plusieurs coordonnées de texture, spécifie la coordonnée de texture à utiliser pour les calculs de frame de tangente. Si la valeur est zéro, le maillage n’a qu’une seule coordonnée de texture.
-
dwUPartialOutSemantic [ dans]
-
Type : DWORD
Spécifie la sémantique de sortie pour le type, généralement D3DDECLUSAGE _ tangente, qui décrit où la coordonnée partielle par rapport à la coordonnée de la texture U sera stockée. Si _ la valeur par défaut est D3DX, cette dérivée partielle n’est pas stockée.
-
dwUPartialOutIndex [ dans]
-
Type : DWORD
Spécifie l’index sémantique auquel stocker le dérivée partiel par rapport à la coordonnée de texture U.
-
dwVPartialOutSemantic [ dans]
-
Type : DWORD
Spécifie le type D3DDECLUSAGE , généralement D3DDECLUSAGE _ binormal, qui décrit l’emplacement de stockage de la partie dérivée partielle par rapport à la coordonnée de texture V. Si _ la valeur par défaut est D3DX, cette dérivée partielle n’est pas stockée.
-
dwVPartialOutIndex [ dans]
-
Type : DWORD
Spécifie l’index sémantique au niveau duquel stocker la dérivée partielle par rapport à la coordonnée de texture V.
-
dwNormalOutSemantic [ dans]
-
Type : DWORD
Spécifie la sémantique normale de sortie, généralement D3DDECLUSAGE _ normal, qui décrit où le vecteur normal à chaque vertex sera stocké. Si _ la valeur par défaut est D3DX, ce vecteur normal n’est pas stocké.
-
dwNormalOutIndex [ dans]
-
Type : DWORD
Spécifie l’index sémantique à partir duquel stocker le vecteur normal à chaque vertex.
-
dwOptions [ dans]
-
Type : DWORD
Combinaison d’un ou de plusieurs indicateurs D3DXTANGENT qui spécifient des options de calcul de frame tangent. Si la valeur est null, les options suivantes sont spécifiées :
Description D3DXTANGENT Valeur de l’indicateur Pondérez la longueur du vecteur normal par l’angle, en radians, sous-tendus par les deux bords quittant le sommet. & ! (D3DXTANGENT _ POIDS _ par _ zone | D3DXTANGENT _ poids _ égal) Calculez les coordonnées Cartésienles orthogonales à partir des coordonnées de texture (u, v). Consultez la section Notes. & ! (D3DXTANGENT _ ORTHOGONALiser _ à partir de _ U | D3DXTANGENT _ orthogonale _ à partir de _ V) Les textures ne sont pas encapsulées dans les directions u ou v & ! (D3DXTANGENT _ ENVELOPPE _ UV) Les dérivés partiels en ce qui concerne les coordonnées de texture sont normalisés. & ! (D3DXTANGENT _ ne pas _ normaliser les _ partiels) Les vertex sont triés dans le sens inverse des aiguilles d’une passe autour de chaque triangle. & ! (D3DXTANGENT _ PV de vent _ ) Utilisez des vecteurs normaux par vertex déjà présents dans le maillage d’entrée. & ! (D3DXTANGENT _ CALCULER les _ normales) Si _ la génération _ de D3DXTANGENT sur _ place n’est pas définie, le maillage d’entrée est cloné. La maille d’origine doit donc disposer d’un espace suffisant pour stocker le vecteur normal calculé et les données dérivées partielles.
-
pdwAdjacency [ dans]
-
Type : const DWORD *
Pointeur vers un tableau de trois DWORD par visage qui spécifient les trois voisins pour chaque face de la maille. Le nombre d’octets dans ce tableau doit être au moins égal à 3 * GetNumFaces * sizeof (DWORD).
-
fPartialEdgeThreshold [ dans]
-
Type : float
Spécifie le cosinus maximal de l’angle à partir duquel deux dérivés partiels sont considérés comme incompatibles entre eux. Si le produit scalaire de la direction des deux dérivés partiels dans les triangles contigus est inférieur ou égal à ce seuil, les vertex partagés entre ces triangles seront fractionnés.
-
fSingularPointThreshold [ dans]
-
Type : float
Spécifie l’amplitude maximale d’une dérivée partielle à laquelle un vertex sera considéré comme singulier. Comme plusieurs triangles sont des incidents sur un point qui ont des images tangentes proches, mais qui s’annulent complètement l’un de l’autre (par exemple, en haut d’une sphère), la grandeur de la dérivée partielle diminue. Si la magnitude est inférieure ou égale à ce seuil, le vertex est fractionné pour chaque triangle qui le contient.
-
fNormalEdgeThreshold [ dans]
-
Type : float
Semblable à fPartialEdgeThreshold, spécifie le cosinus maximal de l’angle entre deux normales qui est un seuil au-delà duquel les vertex partagés entre triangles seront fractionnés. Si le produit scalaire des deux normales est inférieur au seuil, les vertex partagés sont fractionnés, formant ainsi un bord fixe entre les triangles voisins. Si le produit scalaire dépasse le seuil, les normales des triangles voisins seront interpolées.
-
ppMeshOut [ à]
-
Type : ID3DXMesh**
Adresse d’un pointeur vers un objet de maillage ID3DXMesh de sortie qui reçoit les données de vecteur tangente, Binormal et normal calculées.
-
ppVertexMapping [ à]
-
Type : ID3DXBuffer**
Adresse d’un pointeur vers un objet de mémoire tampon ID3DXBuffer de sortie qui reçoit un mappage de nouveaux vertex calculés par cette méthode aux vertex d’origine. La mémoire tampon est un tableau de DWORDs, dont la taille de tableau est définie en tant que nombre de vertex dans ppMeshOut.
Valeur retournée
Type : HRESULT
Si la fonction est réussie, la valeur de retour est S _ OK. Si la fonction échoue, la valeur de retour peut être l’une des suivantes : D3DERR _ INVALIDCALL, D3DXERR _ sera déplacé, E _ OUTOFMEMORY.
Remarques
Une version simplifiée de cette fonction est disponible en tant que D3DXComputeTangentFrame.
Le vecteur normal calculé à chaque vertex est toujours normalisé pour avoir une longueur d’unité.
La solution la plus robuste pour calculer les coordonnées Cartésienles orthogonales consiste à ne pas définir d’indicateurs D3DXTANGENT _ _ de manière orthogonale à partir de _ vous et D3DXTANGENT _ à orthogonaliser _ à partir de _ v, afin que les coordonnées orthogonales soient calculées à partir des coordonnées de texture que vous et v. Toutefois, dans ce cas, si u ou v est égal à zéro, la fonction calcule les coordonnées orthogonales à l’aide _ de D3DXTANGENT orthogonale _ de _ v ou de D3DXTANGENT _ orthogonale _ à partir de _ u, respectivement.
Configuration requise
| Condition requise | Valeur |
|---|---|
| En-tête |
|
| Bibliothèque |
|