Game Development Reference
a bitmap. The simplest mapping between a polygon and a bitmap is to use
a four-vertex polygon where the corners of the bitmap map directly to the
vertices of the polygon. The challenge then becomes one of determining,
for each on-screen pixel from the polygon, which texture pixel ( u , v ) to
choose for the display.
There are many approaches to this and there are several references to
further information for the interested reader in the bibliography. In
essence, we need a function that goes from screen space to texture
space, via world space. In other words, an inverse function of the mapping
we use to transform a vertex in world space to screen space.
Figure 2.8 Overview of position P and vectors M and N.
First we define vectors P , M and N . P is simply a vertex one. For
simplicity, P does not need to be on the polygon. It is, however, a point in
world space. Vectors M and N define the orientation of the texture in world
space. For simplicity here, we define them as vertices 0 and 2 of our
polygon. So vertex 0 is P + N , vertex 2 is P + M and vertex 3 is P + M +
N . This will stretch the texture over the whole polygon. Using different
values for P , M and N could stretch the texture over several polygons.
If we consider a point a on the plane defined by P , M and N , it can be
a = P + u M + v N
where u and v are values between 0 and 1.
We need functions that define u and v from screen coordinates. When
going from world space to screen space ( sx , sy ), we perform a mapping;
at its simplest this perspective transform is