static void draw(void) { static int count=0; static char frbuf[80]; int i; float fr,base,offset; dojoy(); glEnable(GL_DEPTH_TEST); /* if(count & 1) { glDepthRange(1.0,0.5); glDepthFunc(GL_GREATER); } else { glDepthRange(0.0,0.5); glDepthFunc(GL_LESS); } */ /*glClear(GL_COLOR_BUFFER_BIT);*/ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); if(usetex) glEnable(GL_TEXTURE_2D); else glDisable(GL_TEXTURE_2D); if(fog) glEnable(GL_FOG); else glDisable(GL_FOG); glShadeModel(GL_SMOOTH); glPushMatrix(); calcposobs(); gluLookAt(obs[0],obs[1],obs[2], obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], 0.0,0.0,1.0); if(dir[0]>0) { offset=8.0; base=obs[0]-fmod(obs[0],8.0); } else { offset=-8.0; base=obs[0]+(8.0-fmod(obs[0],8.0)); } glPushMatrix(); glTranslatef(base-offset/2.0,0.0,0.0); for(i=0;i<NUMBLOC;i++) { glTranslatef(offset,0.0,0.0); glBindTexture(GL_TEXTURE_2D,t1id); drawobjs(striplength_skin_11,stripdata_skin_11); glBindTexture(GL_TEXTURE_2D,t2id); drawobjs(striplength_skin_12,stripdata_skin_12); drawobjs(striplength_skin_9,stripdata_skin_9); drawobjs(striplength_skin_13,stripdata_skin_13); } glPopMatrix(); glPopMatrix(); if((count % FRAME)==0) { fr=gettime(); sprintf(frbuf,"Frame rate: %f",FRAME/fr); } glDisable(GL_TEXTURE_2D); glDisable(GL_DEPTH_TEST); glDisable(GL_FOG); glShadeModel(GL_FLAT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-0.5,639.5,-0.5,479.5,-1.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glColor3f(1.0,0.0,0.0); glRasterPos2i(10,10); printstring(GLUT_BITMAP_HELVETICA_18,frbuf); glRasterPos2i(350,470); printstring(GLUT_BITMAP_HELVETICA_10,"Tunnel V1.3 Written by David Bucciarelli ([email protected])"); if(help) printhelp(); reshape(WIDTH,HEIGHT); glutSwapBuffers(); count++; }
static void draw(void) { static char frbuf[80] = ""; int i; float base, offset; if (NiceFog) glHint(GL_FOG_HINT, GL_NICEST); else glHint(GL_FOG_HINT, GL_DONT_CARE); dojoy(); glClear(GL_COLOR_BUFFER_BIT); if (usetex) glEnable(GL_TEXTURE_2D); else glDisable(GL_TEXTURE_2D); if (fog) glEnable(GL_FOG); else glDisable(GL_FOG); glShadeModel(GL_SMOOTH); glPushMatrix(); calcposobs(); gluLookAt(obs[0], obs[1], obs[2], obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2], 0.0, 0.0, 1.0); if (dir[0] > 0) { offset = 8.0; base = obs[0] - fmod(obs[0], 8.0); } else { offset = -8.0; base = obs[0] + (8.0 - fmod(obs[0], 8.0)); } glPushMatrix(); glTranslatef(base - offset / 2.0, 0.0, 0.0); for (i = 0; i < NUMBLOC; i++) { glTranslatef(offset, 0.0, 0.0); glBindTexture(GL_TEXTURE_2D, t1id); drawobjs(striplength_skin_11, stripdata_skin_11); glBindTexture(GL_TEXTURE_2D, t2id); drawobjs(striplength_skin_12, stripdata_skin_12); drawobjs(striplength_skin_9, stripdata_skin_9); drawobjs(striplength_skin_13, stripdata_skin_13); } glPopMatrix(); glPopMatrix(); glDisable(GL_TEXTURE_2D); glDisable(GL_FOG); glShadeModel(GL_FLAT); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glColor3f(1.0, 0.0, 0.0); glRasterPos2i(10, 10); printstring(GLUT_BITMAP_HELVETICA_18, frbuf); glRasterPos2i(350, 470); printstring(GLUT_BITMAP_HELVETICA_10, "Tunnel V1.5 Written by David Bucciarelli ([email protected])"); if (help) printhelp(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glutSwapBuffers(); Frames++; { GLint t = glutGet(GLUT_ELAPSED_TIME); if (t - T0 >= 2000) { GLfloat seconds = (t - T0) / 1000.0; GLfloat fps = Frames / seconds; sprintf(frbuf, "Frame rate: %f", fps); T0 = t; Frames = 0; } } }