ID3DX10SkinInfo::D oSoftwareSkinning-Methode

Führen Sie software skinning auf einem Array von Scheitelungen aus.

Syntax

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
);

Parameter

StartVertex [ In]

Typ: UINT

Ein 0-basierter Index in pSrcVertices.

VertexCount [ In]

Typ: UINT

Anzahl der zu transformierenden Scheitelzeichen.

pSrcVertices [ In]

Typ: * void

Zeiger auf ein Array von scheitelpunkts, die transformiert werden soll.

SrcStride [ In]

Typ: UINT

Die Größe eines Scheitelpunkts in pSrcVertices in Bytes.

pDestVertices [ in, out]

Typ: * void

Zeiger auf ein Array von Scheitelpunkt, das mit den transformierten Scheitelpunkt gefüllt wird.

DestStride [ In]

Typ: UINT

Die Größe eines Scheitelpunkts in pDestVertices in Bytes.

pBoneMatrices [ In]

Typ: D3DXMATRIX*

Ein Array von Matrizen, die verwendet werden, um die punkte zu transformieren, die den einzelnen Gittern zugeordnet sind, damit die Scheitelpunkte, die dem I-Scheitelpunkt zugeordnet sind, von [ ] pBoneMatrices [ i transformiert ] werden. Dieses Array wird nur verwendet, um die Matrizen zu transformieren, wenn der IsNormal-Wert in pChannelDescs auf FALSE festgelegt ist. Andernfalls wird pInverseTransposeBoneMatrices verwendet.

pInverseTransposeBoneMatrices [ In]

Typ: D3DXMATRIX*

Wenn dieser Wert NULL ist, wird er auf pBoneMatrices festgelegt. Dieses Array von Matrizen wird nur verwendet, um die Scheitelungen zu transformieren, wenn der IsNormal-Wert in pChannelDescs auf TRUE festgelegt ist. Andernfalls wird pBoneMatrices verwendet.

pChannelDescs [ In]

Typ: D3DX10 _ SKINNING _ CHANNEL*

Zeiger auf eine D3DX10 SKINNING CHANNEL-Struktur, die den Member der Scheitelpunkt-Decl bestimmt, auf der die Softwares _ _ skinning erfolgt.

NumChannels [ In]

Typ: UINT

Die Anzahl der D3DX10 _ SKINNING _ CHANNEL-Strukturen in pChannelDescs.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, ist der Rückgabewert S _ OK. Wenn die Methode fehlschlägt, kann der Rückgabewert sein: E _ INVALIDARG.

Hinweise

Hier ist ein Beispiel für die Verwendung von Software Skinning:

//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);

Anforderungen

Anforderung Wert
Header
D3DX10.h
Bibliothek
D3DX10.lib

Siehe auch

ID3DX10SkinInfo

D3DX-Schnittstellen