Subdivision |

|
void subdivide(float *v1, float *v2, float *v3) {
GLfloat v12[3], v23[3], v31[3];
GLint i;
for(i = 0; i < 3; i++) {
v12[i] = v1[i] + v2[i];
v23[i] = v2[i] + v3[i];
v31[i] = v3[i] + v1[i];
}
normalize(v12);
normalize(v23);
normalize(v31);
drawtriangle(v1, v12, v31);
drawtriangle(v2, v23, v12);
drawtriangle(v3, v31, v23);
drawtriangle(v12, v23, v31);
}
...
for(i = 0; i < 20; i++) {
subivide(&vdata[tindices[i][0]][0],
subivide(&vdata[tindices[i][1]][0],
subivide(&vdata[tindices[i][2]][0]);
}