Partager via


ID3DX10SkinInfo::D oSoftwareSkinning, méthode

Effectuez un skinning logiciel sur un tableau de sommets.

Syntaxe

HRESULT DoSoftwareSkinning(
  [in]      UINT                    StartVertex,
  [in]      UINT                    VertexCount,
  [in]      void                    *pSrcVertices,
  [in]      UINT                    SrcStride,
  [in, out] void                    *pDestVertices,
  [in]      UINT                    DestStride,
  [in]      D3DXMATRIX              *pBoneMatrices,
  [in]      D3DXMATRIX              *pInverseTransposeBoneMatrices,
  [in]      D3DX10_SKINNING_CHANNEL *pChannelDescs,
  [in]      UINT                    NumChannels
);

Paramètres

StartVertex [in]

Type : UINT

Index de base 0 dans pSrcVertices.

VertexCount [in]

Type : UINT

Nombre de sommets à transformer.

pSrcVertices [in]

Type : void*

Pointeur vers un tableau de sommets à transformer.

SrcStride [in]

Type : UINT

Taille, en octets, d’un sommet dans pSrcVertices.

pDestVertices [in, out]

Type : void*

Pointeur vers un tableau de sommets, qui sera rempli avec les sommets transformés.

DestStride [in]

Type : UINT

Taille, en octets, d’un vertex dans pDestVertices.

pBoneMatrices [in]

Type : D3DXMATRIX*

Tableau de matrices qui sera utilisé pour transformer les points mappés à chaque os, de sorte que les sommets mappés à l’os[i] soient transformés par pBoneMatrices[i]. Ce tableau sera utilisé pour transformer les matrices uniquement si la valeur IsNormal dans pChannelDescs est définie sur FALSE, sinon pInverseTransposeBoneMatrices sera utilisée.

pInverseTransposeBoneMatrices [in]

Type : D3DXMATRIX*

Si cette valeur a la valeur NULL, elle est définie sur pBoneMatrices. Ce tableau de matrices sera utilisé pour transformer les sommets uniquement si la valeur IsNormal dans pChannelDescs est définie sur TRUE, sinon pBoneMatrices sera utilisé.

pChannelDescs [in]

Type : D3DX10_SKINNING_CHANNEL*

Pointeur vers une structure de D3DX10_SKINNING_CHANNEL, qui détermine le membre du vertex decl sur lequel l’apparence logicielle sera effectuée.

NumChannels [in]

Type : UINT

Nombre de structures D3DX10_SKINNING_CHANNEL dans pChannelDescs.

Valeur retournée

Type : HRESULT

Si la méthode réussit, la valeur de retour est S_OK. Si la méthode échoue, la valeur de retour peut être : E_INVALIDARG.

Notes

Voici un exemple d’utilisation de l’apparence logicielle :

//vertex definition
struct MyVertex
{
    D3DXVECTOR3 Position;
    D3DXVECTOR2 Weight;
    D3DXVECTOR2 TexCoord;
};

//create vertex data
const UINT numVertices = 16;
MyVertex vertices[numVertices] = {...};
MyVertex destVertices[numVertices];

//create bone matrices
D3DXMATRIX boneMatrices[2];
D3DXMatrixIdentity(&boneMatrices[0]);
D3DXMatrixRotationX(&boneMatrices[1], 3.14159f / 180.0f);

//create bone indices and weights
UINT boneIndices[numVertices] = {...};
float boneWeights[2][numVertices] = {...};

//create skin info, populate it with bones and vertices, and then map them to each other
ID3DX10SkinInfo *pSkinInfo = NULL;
D3DX10CreateSkinInfo(&pSkinInfo);
pSkinInfo->AddBones(2);
pSkinInfo->AddVertices(numVertices);
pSkinInfo->AddBoneInfluences(0, numVertices, boneIndices, boneWeights[0]);
pSkinInfo->AddBoneInfluences(1, numVertices, boneIndices, boneWeights[1]);

//create channel desc
D3DX10_SKINNING_CHANNEL channelDesc;
channelDesc.SrcOffset = 0;
channelDesc.DestOffset = 0;
channelDesc.IsNormal = FALSE;

//do the skinning
pSkinInfo->DoSoftwareSkinning(0, numVertices,
                              vertices, sizeof(MyVertex), 
                              destVertices, sizeof(MyVertex), 
                              boneMatrices, NULL, 
                              &channelDesc, 1);

Spécifications

Condition requise Valeur
En-tête
D3DX10.h
Bibliothèque
D3DX10.lib

Voir aussi

ID3DX10SkinInfo

D3DX Interfaces