Actually, I want to blend transform matrices
for skeletal animation, not vertexes. Vertex
blending (a la Quake 2) only needs two
matrices and a fixed weight.
Anyway, skeletal animation is where you have
some “bones” (invisible) in your model,
which have swivel “joints” (one end of the
bone, typically) and some degree of freedom
of movement. Then you “tag” each vertex with
which “bone” it belongs to. At seams (joints)
a vertex belongs a little to at least two
bones; sometimes more.
The bones, in turn, are hierarchical, so that
bending your upper-arm will move the joint to
the lower-arm; then you bend the lower arm in
relation to the upper arm.
While you can pre-calculate the various
matrices for the bones, the problem is that
to “fire” an entire mesh in one go, you need
blending support for one matrix for each
bone, which at a minimum (for a biped) is
back, upper&lower left&right legs, ditto
arms, and neck, for a total of 10 matrices.
Also, even if any individual vertex only
belongs to one or two bones (i e has non-0
weights for those matrices) the problem is
that to draw a triangle, you have to involve
three vertexes, and thus you could (worst
case) need 6 matrices active at the same time
to draw that one triangle.
The current consensus is to do all of this
in model space on the host, and then write
the transformed vertexes to the card for
placement in the world, lighting, etc.
For more details, look up “skinning” on your
favourite web search tool.