To do the animation you send the array of bone transforms to the shader. You should have a vertex structure containing indexes to which bone the vertex gets affected by and also weights deciding how much it's affected.
struct SkinnedVertexIn
{
float3 PosL : POSITION;
float3 NormalL : NORMAL;
float2 Tex : TEXCOORD;
float3 Weights : WEIGHTS;
uint4 BoneIndices : BONEINDICES; // Indices into the bone transform array
};
And then you do something like this to calculate the position for a vertex after applying the bone transforms:
cbuffer cbSkinned
{
float4x4 gBoneTransforms[96];
};
...
for(int i = 0; i < 4; ++i)
{
posL += weights[i]*mul(float4(vin.PosL, 1.0f), gBoneTransforms[vin.BoneIndices[i]]).xyz;
normalL += weights[i]*mul(vin.NormalL, (float3x3)gBoneTransforms[vin.BoneIndices[i]]);
}
Good luck!