
i
i
i
i
i
i
i
i
328 13. Programming 3D Graphics in Real Time
void Make3dListS(void){ // make display lists
GLfloat x,y,z,n[3],color[4],spec_color[]=(1.0,1.0,1.0};
FACE
*
fp;
VERTEX
*
v,
*
v1,
*
v2,
*
v0;
normal
*
nv;
int i,j,k,Vi,V[3],jf,jl,count,strip;
if(Nface == 0)return;
scale=GetScaleValue(c)
*
ObjScale;
if((nv=(normal
*
)malloc(sizeof(normal)
*
Nvert)) == NULL)return;
..
// make vertex normals from adjacent vertices
..
if(listID > 0){glDeleteLists(listID,listID);listID=0;}
listID=1; glNewList(listID,GL_COMPILE);
count=0;
glBegin(GL_TRIANGLES);
fp=MainFp; for(i=0;i<Nface;i++,fp++){ // loop over all polygons
if(fp->mapped)continue;
// skip any polygons with image maps applied
v0=(MainVp+fp->V[0]); ...