In order to correctly interpolate texture
coordinates under perspective we must consider the set of all values that will
be projected to be a single homogeneous vector:
(x, y, z, w, u, v, 1, R, G, B, A)
After transforming the vertex we have:
(xw, yw, zw, w, u, v, 1, R, G, B, A)
When projecting a homogenous vector we divide by the homogenous coordinate:
(xw/w, yw/w, zw/w, w/w, u/w, v/w, 1/w, R/w, G/w, B/w, A/w)
We then interpolate between the vertices and perform the projection of the texture
coordinates at the pixels. That is, at the vertices we compute u/w, v/w, and
1/w. We linearly interpolate these three across the pixels. Then at each pixel
we divide the interpolated texture coordinates by the interpolated 1/w to yield
the final u,v.
For more information about that issue, see : http://easyweb.easynet.co.uk/~mrmeanie/tmap/tmap.htm