int main(int ac, char **av) { fprintf(stderr, "Tunnel2 V1.0\nWritten by David Bucciarelli ([email protected])\n"); glutInitWindowSize(WIDTHC0, HEIGHTC0); glutInit(&ac, av); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); #ifdef FX if (fxMesaSelectCurrentBoard(0) < 0) { fprintf(stderr, "The first Voodoo Graphics board is missing !?!?\n"); return -1; } #endif if (!(channel[0] = glutCreateWindow("Channel 0"))) { fprintf(stderr, "Error, couldn't open window\n"); return -1; } reshapechannel0(WIDTHC0, HEIGHTC0); init(); inittextures(); glutDisplayFunc(drawchannel0); glutReshapeFunc(reshapechannel0); glutKeyboardFunc(key); glutSpecialFunc(special); #ifdef FX if (fxMesaSelectCurrentBoard(1) < 0) { fprintf(stderr, "The second Voodoo Graphics board is missing !\n"); exit(-1); } #endif glutInitWindowPosition(WIDTHC0, 0); glutInitWindowSize(WIDTHC1, HEIGHTC1); if (!(channel[1] = glutCreateWindow("Channel 1"))) { fprintf(stderr, "Error, couldn't open window\n"); exit(-1); } reshapechannel1(WIDTHC1, HEIGHTC1); init(); inittextures(); glutDisplayFunc(drawchannel1); glutReshapeFunc(reshapechannel1); glutKeyboardFunc(key); glutSpecialFunc(special); glutIdleFunc(drawall); calcposobs(); glutMainLoop(); cleanup(); return 0; }
int main(int ac, char **av) { float fogcolor[4] = { 0.7, 0.7, 0.7, 1.0 }; fprintf(stderr, "Tunnel V1.5\nWritten by David Bucciarelli ([email protected])\n"); glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); if (!(win = glutCreateWindow("Tunnel"))) { fprintf(stderr, "Error, couldn't open window\n"); return -1; } glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(80.0, WIDTH / (float) HEIGHT, 1.0, 50.0); glMatrixMode(GL_MODELVIEW); glShadeModel(GL_SMOOTH); glDisable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_TEXTURE_2D); glEnable(GL_FOG); glFogi(GL_FOG_MODE, GL_EXP2); glFogfv(GL_FOG_COLOR, fogcolor); glFogf(GL_FOG_DENSITY, 0.06); glHint(GL_FOG_HINT, GL_NICEST); inittextures(); glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]); glClear(GL_COLOR_BUFFER_BIT); calcposobs(); glutReshapeFunc(reshape); glutDisplayFunc(draw); glutKeyboardFunc(key); glutSpecialFunc(special); glutIdleFunc(idle); glEnable(GL_BLEND); /*glBlendFunc(GL_SRC_ALPHA_SATURATE,GL_ONE); */ /*glEnable(GL_POLYGON_SMOOTH); */ glutMainLoop(); return 0; }
int main(int ac, char **av) { float fogcolor[4] = { 0.7, 0.7, 0.7, 1.0 }; fprintf(stderr, "IperS V1.0\nWritten by David Bucciarelli ([email protected])\n"); glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); if (!(win = glutCreateWindow("IperS"))) { fprintf(stderr, "Error, couldn't open window\n"); exit(-1); } reshape(WIDTH, HEIGHT); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_TEXTURE_2D); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_FOG); glFogi(GL_FOG_MODE, GL_EXP2); glFogfv(GL_FOG_COLOR, fogcolor); glFogf(GL_FOG_DENSITY, 0.006); glHint(GL_FOG_HINT, GL_NICEST); inittextures(); initdlists(); initlight(); glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]); glClear(GL_COLOR_BUFFER_BIT); calcposobs(); glutReshapeFunc(reshape); glutDisplayFunc(draw); glutKeyboardFunc(key); glutSpecialFunc(special); glutIdleFunc(draw); glutMainLoop(); cleanup(); return 0; }
int main(int ac, char **av) { float fogcolor[4]={0.7,0.7,0.7,1.0}; fprintf(stderr,"Tunnel V1.3\nWritten by David Bucciarelli ([email protected])\n"); /* #ifdef _WIN32 if(!SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS)) { fprintf(stderr,"Error setting the process class.\n"); return 0; } if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL)) { fprintf(stderr,"Error setting the process priority.\n"); return 0; } #endif */ glutInitWindowPosition(0,0); glutInitWindowSize(WIDTH,HEIGHT); glutInit(&ac,av); glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE); glutCreateWindow("Tunnel"); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(80.0,WIDTH/(float)HEIGHT,1.0,50.0); glMatrixMode(GL_MODELVIEW); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_TEXTURE_2D); glEnable(GL_FOG); glFogi(GL_FOG_MODE,GL_EXP2); glFogfv(GL_FOG_COLOR,fogcolor); glFogf(GL_FOG_DENSITY,0.06); #ifdef FX glHint(GL_FOG_HINT,GL_NICEST); /*fxMesaTextureUsePalette(1); */ #endif inittextures(); #ifndef FX glDisable(GL_TEXTURE_2D); usetex=0; #endif glClearColor(fogcolor[0],fogcolor[1],fogcolor[2],fogcolor[3]); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); calcposobs(); glutReshapeFunc(reshape); glutDisplayFunc(draw); glutKeyboardFunc(key); glutSpecialFunc(special); glutIdleFunc(draw); glutMainLoop(); return 0; /* ANSI C requires main to return int. */ }
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; } } }
int main(int ac, char **av) { float fogcolor[4]={0.025,0.025,0.025,1.0}; fprintf(stderr,"Teapot V1.2\nWritten by David Bucciarelli ([email protected])\n"); /* if(!SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS)) { fprintf(stderr,"Error setting the process class.\n"); return 0; } if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL)) { fprintf(stderr,"Error setting the process priority.\n"); return 0; } */ glutInitWindowSize(WIDTH,HEIGHT); glutInit(&ac,av); glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE); if(!(win=glutCreateWindow("Teapot"))) { fprintf(stderr,"Error, couldn't open window\n"); return -1; } reshape(WIDTH,HEIGHT); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_TEXTURE_2D); glEnable(GL_FOG); glFogi(GL_FOG_MODE,GL_EXP2); glFogfv(GL_FOG_COLOR,fogcolor); glFogf(GL_FOG_DENSITY,0.04); glHint(GL_FOG_HINT,GL_NICEST); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); calcposobs(); inittextures(); initlight(); initdlists(); glClearColor(fogcolor[0],fogcolor[1],fogcolor[2],fogcolor[3]); glutReshapeFunc(reshape); glutDisplayFunc(draw); glutKeyboardFunc(key); glutSpecialFunc(special); glutIdleFunc(draw); glutMainLoop(); cleanup(); return 0; }
static void draw(void) { static char frbuf[80] = ""; dojoy(); glEnable(GL_DEPTH_TEST); 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); glEnable(GL_LIGHTING); 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); drawlight1(); glCallList(basedlist); drawteapot(); drawlight2(); glPopMatrix(); glDisable(GL_LIGHTING); 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,"Teapot V1.2 Written by David Bucciarelli ([email protected])"); if(help) printhelp(); reshape(WIDTH,HEIGHT); 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); printf("%s\n", frbuf); fflush(stdout); T0 = t; Frames = 0; } } }
static void DrawFire(ModeInfo * mi) { int j; firestruct *fs = &fire[MI_SCREEN(mi)]; Bool wire = MI_IS_WIREFRAME(mi); if (do_trackmouse && !MI_IS_ICONIC(mi)) trackmouse(mi); if (do_wander) { GLfloat x, y, z; # define SINOID(SCALE,SIZE) \ ((((1 + sin((frame * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2) x = SINOID(0.031, 0.85); y = SINOID(0.017, 0.25); z = SINOID(0.023, 0.85); frame++; fs->obs[0] = x + DEF_OBS[0]; fs->obs[1] = y + DEF_OBS[1]; fs->obs[2] = z + DEF_OBS[2]; fs->dir[1] = y; fs->dir[2] = z; } glEnable(GL_DEPTH_TEST); if (fs->fog) glEnable(GL_FOG); else glDisable(GL_FOG); glDepthMask(GL_TRUE); glClearColor(0.5, 0.5, 0.8, 1.0); /* sky in the distance */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); calcposobs(fs); gluLookAt(fs->obs[0], fs->obs[1], fs->obs[2], fs->obs[0] + fs->dir[0], fs->obs[1] + fs->dir[1], fs->obs[2] + fs->dir[2], 0.0, 1.0, 0.0); glEnable(GL_TEXTURE_2D); /* draw ground using the computed texture */ #ifdef HAVE_GLBINDTEXTURE if (do_texture) { glColor4f(1.0,1.0,1.0,1.0); /* white to get texture in it's true color */ glBindTexture(GL_TEXTURE_2D, fs->groundid); } else #endif /* HAVE_GLBINDTEXTURE */ glColor4f(0.54, 0.27, 0.07, 1.0); /* untextured ground color */ glBegin(GL_QUADS); glTexCoord2fv(qt[0]); glVertex3fv(q[0]); glTexCoord2fv(qt[1]); glVertex3fv(q[1]); glTexCoord2fv(qt[2]); glVertex3fv(q[2]); glTexCoord2fv(qt[3]); glVertex3fv(q[3]); glEnd(); glAlphaFunc(GL_GEQUAL, 0.9); #ifdef HAVE_GLBINDTEXTURE if (fs->num_trees) { /* here do_texture IS True - and color used is white */ glEnable(GL_ALPHA_TEST); glBindTexture(GL_TEXTURE_2D,fs->treeid); for(j=0;j<fs->num_trees;j++) drawtree(fs->treepos[j].x ,fs->treepos[j].y ,fs->treepos[j].z ); glDisable(GL_ALPHA_TEST); } #endif /* HAVE_GLBINDTEXTURE */ glDisable(GL_TEXTURE_2D); glDepthMask(GL_FALSE); if (fs->shadows) { /* draw shadows with black color */ glBegin(wire ? GL_LINE_STRIP : GL_TRIANGLES); for (j = 0; j < fs->np; j++) { glColor4f(black[0], black[1], black[2], fs->p[j].c[0][3]); glVertex3f(fs->p[j].p[0][0], 0.1, fs->p[j].p[0][2]); glColor4f(black[0], black[1], black[2], fs->p[j].c[1][3]); glVertex3f(fs->p[j].p[1][0], 0.1, fs->p[j].p[1][2]); glColor4f(black[0], black[1], black[2], fs->p[j].c[2][3]); glVertex3f(fs->p[j].p[2][0], 0.1, fs->p[j].p[2][2]); } glEnd(); } glBegin(wire ? GL_LINE_STRIP : GL_TRIANGLES); for (j = 0; j < fs->np; j++) { /* draw particles: colors are computed in setpart */ glColor4fv(fs->p[j].c[0]); glVertex3fv(fs->p[j].p[0]); glColor4fv(fs->p[j].c[1]); glVertex3fv(fs->p[j].p[1]); glColor4fv(fs->p[j].c[2]); glVertex3fv(fs->p[j].p[2]); setpart(fs, &fs->p[j]); } glEnd(); /* draw rain particles if no fire particles */ if (!fs->np) { float timeused = gettimerain(); glDisable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); glBegin(GL_LINES); for (j = 0; j < NUMPART; j++) { glColor4f(0.7f,0.95f,1.0f,0.0f); glVertex3fv(fs->r[j].oldpos); glColor4f(0.3f,0.7f,1.0f,1.0f); glVertex3fv(fs->r[j].pos); setpartrain(fs, &fs->r[j],timeused); } glEnd(); glShadeModel(GL_FLAT); } glDisable(GL_TEXTURE_2D); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); glDisable(GL_FOG); /* manage framerate display */ if (MI_IS_FPS(mi)) do_fps (mi); glPopMatrix(); }
static void drawfire(void) { static int count=0; static char frbuf[80]; int j; float fr; dojoy(); glEnable(GL_DEPTH_TEST); if(fog) glEnable(GL_FOG); else glDisable(GL_FOG); glDepthMask(GL_TRUE); glClearColor(1.0,1.0,1.0,1.0); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glPushMatrix(); calcposobs(); gluLookAt(obs[0],obs[1],obs[2], obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], 0.0,1.0,0.0); glColor4f(1.0,1.0,1.0,1.0); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,groundid); glBegin(GL_QUADS); glTexCoord2fv(qt[0]); glVertex3fv(q[0]); glTexCoord2fv(qt[1]); glVertex3fv(q[1]); glTexCoord2fv(qt[2]); glVertex3fv(q[2]); glTexCoord2fv(qt[3]); glVertex3fv(q[3]); glEnd(); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GEQUAL,0.9); glBindTexture(GL_TEXTURE_2D,treeid); for(j=0;j<NUMTREE;j++) drawtree(treepos[j][0],treepos[j][1],treepos[j][2]); glDisable(GL_TEXTURE_2D); glDepthMask(GL_FALSE); glDisable(GL_ALPHA_TEST); if(shadows) { glBegin(GL_TRIANGLES); for(j=0;j<np;j++) { glColor4f(black[0],black[1],black[2],p[j].c[0][3]); glVertex3f(p[j].p[0][0],0.1,p[j].p[0][2]); glColor4f(black[0],black[1],black[2],p[j].c[1][3]); glVertex3f(p[j].p[1][0],0.1,p[j].p[1][2]); glColor4f(black[0],black[1],black[2],p[j].c[2][3]); glVertex3f(p[j].p[2][0],0.1,p[j].p[2][2]); } glEnd(); } glBegin(GL_TRIANGLES); for(j=0;j<np;j++) { glColor4fv(p[j].c[0]); glVertex3fv(p[j].p[0]); glColor4fv(p[j].c[1]); glVertex3fv(p[j].p[1]); glColor4fv(p[j].c[2]); glVertex3fv(p[j].p[2]); setpart(&p[j]); } glEnd(); if((count % FRAME)==0) { fr=gettime(); sprintf(frbuf,"Frame rate: %f",FRAME/fr); } glDisable(GL_TEXTURE_2D); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); glDisable(GL_FOG); 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(370,470); printstring(GLUT_BITMAP_HELVETICA_10,"Fire V1.5 Written by David Bucciarelli ([email protected])"); if(help) printhelp(); reshape(WIDTH,HEIGHT); glPopMatrix(); glutSwapBuffers(); count++; }
static void drawscene(void) { static char frbuf[80] = ""; dojoy(); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); if (usetex) glEnable(GL_TEXTURE_2D); else glDisable(GL_TEXTURE_2D); if (fog) glEnable(GL_FOG); else glDisable(GL_FOG); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); calcposobs(); gluLookAt(obs[0], obs[1], obs[2], obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2], 0.0, 1.0, 0.0); drawterrain(); glPopMatrix(); 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, "Terrain V1.2 Written by David Bucciarelli ([email protected])"); glRasterPos2i(434, 457); printstring(GLUT_BITMAP_HELVETICA_10, "Based on a Mickael's demo ([email protected])"); if (help) printhelp(); reshape(scrwidth, scrheight); 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; } } }
static void drawfire(void) { static char frbuf[80] = ""; int j; static double t0 = -1.; double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; if (t0 < 0.0) t0 = t; dt = (t - t0) * 1.0; t0 = t; dojoy(); if (NiceFog) glHint(GL_FOG_HINT, GL_NICEST); else glHint(GL_FOG_HINT, GL_DONT_CARE); glEnable(GL_DEPTH_TEST); if (fog) glEnable(GL_FOG); else glDisable(GL_FOG); glDepthMask(GL_TRUE); glClearColor(1.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); calcposobs(); gluLookAt(obs[0], obs[1], obs[2], obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2], 0.0, 1.0, 0.0); glColor4f(1.0, 1.0, 1.0, 1.0); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, groundid); #if 1 glBegin(GL_QUADS); glTexCoord2fv(qt[0]); glVertex3fv(q[0]); glTexCoord2fv(qt[1]); glVertex3fv(q[1]); glTexCoord2fv(qt[2]); glVertex3fv(q[2]); glTexCoord2fv(qt[3]); glVertex3fv(q[3]); glEnd(); #else /* Subdivide the ground into a bunch of quads. This improves fog * if GL_FOG_HINT != GL_NICEST */ { float x, y; float dx = 1.0, dy = 1.0; glBegin(GL_QUADS); for (y = -DIMP; y < DIMP; y += 1.0) { for (x = -DIMP; x < DIMP; x += 1.0) { glTexCoord2f(0, 0); glVertex3f(x, 0, y); glTexCoord2f(1, 0); glVertex3f(x+dx, 0, y); glTexCoord2f(1, 1); glVertex3f(x+dx, 0, y+dy); glTexCoord2f(0, 1); glVertex3f(x, 0, y+dy); } } glEnd(); } #endif glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GEQUAL, 0.9); glBindTexture(GL_TEXTURE_2D, treeid); for (j = 0; j < NUMTREE; j++) drawtree(treepos[j][0], treepos[j][1], treepos[j][2]); glDisable(GL_TEXTURE_2D); glDepthMask(GL_FALSE); glDisable(GL_ALPHA_TEST); if (shadows) { glBegin(GL_TRIANGLES); for (j = 0; j < np; j++) { glColor4f(black[0], black[1], black[2], p[j].c[0][3]); glVertex3f(p[j].p[0][0], 0.1, p[j].p[0][2]); glColor4f(black[0], black[1], black[2], p[j].c[1][3]); glVertex3f(p[j].p[1][0], 0.1, p[j].p[1][2]); glColor4f(black[0], black[1], black[2], p[j].c[2][3]); glVertex3f(p[j].p[2][0], 0.1, p[j].p[2][2]); } glEnd(); } glBegin(GL_TRIANGLES); for (j = 0; j < np; j++) { glColor4fv(p[j].c[0]); glVertex3fv(p[j].p[0]); glColor4fv(p[j].c[1]); glVertex3fv(p[j].p[1]); glColor4fv(p[j].c[2]); glVertex3fv(p[j].p[2]); setpart(&p[j]); } glEnd(); glDisable(GL_TEXTURE_2D); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); glDisable(GL_FOG); 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(370, 470); printstring(GLUT_BITMAP_HELVETICA_10, "Fire V1.5 Written by David Bucciarelli ([email protected])"); if (help) printhelp(); reshape(WIDTH, HEIGHT); glPopMatrix(); 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); printf("%s\n", frbuf); fflush(stdout); T0 = t; Frames = 0; } } }
static void draw(void) { static char frbuf[80] = ""; static GLfloat alpha = 0.0f; static GLfloat beta = 0.0f; static float fr = 0.0; static double t0 = -1.; double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; if (t0 < 0.0) t0 = t; dt = t - t0; t0 = t; dojoy(); 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); 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); /* Scene */ glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glBindTexture(GL_TEXTURE_2D, t1id); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glColor3f(1.0f, 1.0f, 1.0f); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); if (normext) glEnable(GL_RESCALE_NORMAL_EXT); else glEnable(GL_NORMALIZE); glPushMatrix(); glRotatef(alpha, 0.0f, 0.0f, 1.0f); glRotatef(beta, 1.0f, 0.0f, 0.0f); totpoly = 0; drawipers(0, FROM_NONE); glPopMatrix(); alpha += 4.f * dt; beta += 2.4f * dt; glDisable(GL_LIGHTING); glDisable(GL_LIGHT0); glShadeModel(GL_FLAT); if (normext) glDisable(GL_RESCALE_NORMAL_EXT); else glDisable(GL_NORMALIZE); glCallList(skydlist); glPopMatrix(); /* Help Screen */ sprintf(frbuf, "Frame rate: %0.2f LOD: %d Tot. poly.: %d Poly/sec: %.1f", fr, LODbias, totpoly, totpoly * fr); glDisable(GL_TEXTURE_2D); glDisable(GL_FOG); glShadeModel(GL_FLAT); glDisable(GL_DEPTH_TEST); 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, "IperS V1.0 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; fr = Frames / seconds; T0 = t; Frames = 0; } } }
static void draw(void) { static int count=0; static char frbuf[80]; float fr; dojoy(); glEnable(GL_DEPTH_TEST); 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); glEnable(GL_LIGHTING); 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); drawlight1(); glCallList(basedlist); drawteapot(); drawlight2(); glPopMatrix(); if((count % FRAME)==0) { fr=gettime(); sprintf(frbuf,"Frame rate: %f",FRAME/fr); } glDisable(GL_LIGHTING); 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,"Teapot V1.2 Written by David Bucciarelli ([email protected])"); if(help) printhelp(); reshape(WIDTH,HEIGHT); glutSwapBuffers(); count++; }
void drawscene(void) { static int count=0; static char frbuf[80]; float fr; dojoy(); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); if(usetex) glEnable(GL_TEXTURE_2D); else glDisable(GL_TEXTURE_2D); if(fog) glEnable(GL_FOG); else glDisable(GL_FOG); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); calcposobs(); gluLookAt(obs[0],obs[1],obs[2], obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], 0.0,1.0,0.0); drawterrain(); glPopMatrix(); if((count % FRAME)==0) { fr=gettime(); sprintf(frbuf,"Frame rate: %.3f",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,"Terrain V1.2 Written by David Bucciarelli ([email protected])"); glRasterPos2i(434,457); printstring(GLUT_BITMAP_HELVETICA_10,"Based on a Mickael's demo ([email protected])"); if(help) printhelp(); reshape(scrwidth,scrheight); glutSwapBuffers(); count++; }
static void draw(void) { static char frbuf[80] = ""; dojoy(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glEnable(GL_DEPTH_TEST); if (fog) glEnable(GL_FOG); else glDisable(GL_FOG); 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); drawbase(); drawobj(); glColor3f(1.0, 1.0, 1.0); glDisable(GL_TEXTURE_2D); glPushMatrix(); glTranslatef(lightpos[0], lightpos[1], lightpos[2]); glCallList(lightdlist); glPopMatrix(); glPopMatrix(); glDisable(GL_DEPTH_TEST); glDisable(GL_FOG); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glColor3f(0.0f, 0.3f, 1.0f); if (showcheckmap) { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, checkid); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBegin(GL_QUADS); glTexCoord2f(1.0f, 0.0f); glVertex2i(10, 30); glTexCoord2f(1.0f, 1.0f); glVertex2i(10 + 90, 30); glTexCoord2f(0.0f, 1.0f); glVertex2i(10 + 90, 30 + 90); glTexCoord2f(0.0f, 0.0f); glVertex2i(10, 30 + 90); glEnd(); glDisable(GL_TEXTURE_2D); glBegin(GL_LINE_LOOP); glVertex2i(10, 30); glVertex2i(10 + 90, 30); glVertex2i(10 + 90, 30 + 90); glVertex2i(10, 30 + 90); glEnd(); glRasterPos2i(105, 65); printstring(GLUT_BITMAP_HELVETICA_18, "Plane Texture Map"); } if (showreflectmap) { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, reflectid); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBegin(GL_QUADS); glTexCoord2f(1.0f, 0.0f); glVertex2i(540, 30); glTexCoord2f(1.0f, 1.0f); glVertex2i(540 + 90, 30); glTexCoord2f(0.0f, 1.0f); glVertex2i(540 + 90, 30 + 90); glTexCoord2f(0.0f, 0.0f); glVertex2i(540, 30 + 90); glEnd(); glDisable(GL_TEXTURE_2D); glBegin(GL_LINE_LOOP); glVertex2i(540, 30); glVertex2i(540 + 90, 30); glVertex2i(540 + 90, 30 + 90); glVertex2i(540, 30 + 90); glEnd(); glRasterPos2i(360, 65); printstring(GLUT_BITMAP_HELVETICA_18, "Sphere Texture Map"); } glDisable(GL_TEXTURE_2D); glRasterPos2i(10, 10); printstring(GLUT_BITMAP_HELVETICA_18, frbuf); glRasterPos2i(360, 470); printstring(GLUT_BITMAP_HELVETICA_10, "Ray V1.0 Written by David Bucciarelli ([email protected])"); if (help) printhelp(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); updatemaps(); 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; } } }