void redraw(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); glPushMatrix(); drawXform(&xform, TRUE); glEnable(GL_STENCIL_TEST); if(whichSurface < 2) glStencilFunc(GL_EQUAL, whichSurface, 0xff); else glStencilFunc(GL_ALWAYS, 0, 0); glutSolidTorus(2, 4, 20, 20); /* glDisable(GL_STENCIL_TEST); */ /* glDisable(GL_LIGHTING); */ /* glColor3f(1, 1, 1); */ /* glutWireTorus(2, 4, 20, 20); */ /* glEnable(GL_LIGHTING); */ glPopMatrix(); switch(bufferInterest) { case COLOR: break; /* color already in back buffer */ case STENCIL: copyStencilToColor(GL_BACK); break; case DEPTH: copyDepthToColor(GL_BACK); break; } if(takeSnapshot) { takeSnapshot = 0; /* saveSGIImage("snap.rgb", FALSE); */ /* printf("Saved RGBA image in snap.rgba\n"); */ } glutSwapBuffers(); }
void redraw(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /* Only need this if you care to look at the stencil buffer */ if(dataChoice == STENCIL) glClear(GL_STENCIL_BUFFER_BIT); glPushMatrix(); glScalef(.5, .5, .5); if(stage == 1) goto doneWithFrame; setupLight(); setupNormalDrawingState(); glPushMatrix(); glTranslatef(0, 1, 4); glRotatef(135, 0, 1, 0); drawAirplane(); glPopMatrix(); if(stage == 2) goto doneWithFrame; setupBasePolygonState(3); /* 2 decals */ drawGround(); if(stage == 3) goto doneWithFrame; setupDecalState(1); /* decal # 1 = the runway asphalt */ drawAsphalt(); if(stage == 4) goto doneWithFrame; setupDecalState(2); /* decal # 2 = yellow paint on the runway */ drawStripes(); if(stage == 5) goto doneWithFrame; setupDecalState(3); /* decal # 3 = the plane's shadow */ glDisable(GL_LIGHTING); glEnable(GL_BLEND); glPushMatrix(); glColor4f(0, 0, 0, .5); glTranslatef(0, 0, 4); glRotatef(135, 0, 1, 0); glScalef(1, 0, 1); drawAirplane(); glPopMatrix(); glDisable(GL_BLEND); glEnable(GL_LIGHTING); doneWithFrame: setupNormalDrawingState(); glPopMatrix(); switch(dataChoice) { case COLOR: break; /* color already in back buffer */ case STENCIL: copyStencilToColor(GL_BACK); break; case DEPTH: copyDepthToColor(GL_BACK); break; } glutSwapBuffers(); }