user manual

Use Array Style Instead of Pointer Style Code 17
22007E/0November 1999 AMD Athlon Processor x86 Code Optimization
*res++ = dp; /* write transformed z */
dp = vv->x * *m++;
dp += vv->y * *m++;
dp += vv->z * *m++;
dp += vv->w * *m++;
*res++ = dp; /* write transformed w */
++vv; /* next input vertex */
m -= 16; /* reset to start of transform matrix */
}
}
Example 2 (Preferred):
typedef struct {
float x,y,z,w;
} VERTEX;
typedef struct {
float m[4][4];
} MATRIX;
void XForm (float *res, const float *v, const float *m, int
numverts)
{
int i;
const VERTEX* vv = (VERTEX *)v;
const MATRIX* mm = (MATRIX *)m;
VERTEX* rr = (VERTEX *)res;
for (i = 0; i < numverts; i++) {
rr->x = vv->x*mm->m[0][0] + vv->y*mm->m[0][1] +
vv->z*mm->m[0][2] + vv->w*mm->m[0][3];
rr->y = vv->x*mm->m[1][0] + vv->y*mm->m[1][1] +
vv->z*mm->m[1][2] + vv->w*mm->m[1][3];
rr->z = vv->x*mm->m[2][0] + vv->y*mm->m[2][1] +
vv->z*mm->m[2][2] + vv->w*mm->m[2][3];
rr->w = vv->x*mm->m[3][0] + vv->y*mm->m[3][1] +
vv->z*mm->m[3][2] + vv->w*mm->m[3][3];
}
}