-/* $Id: spectex.c,v 1.2 2002/04/22 16:03:37 brianp Exp $ */
/*
* GLUT demonstration of texturing with specular highlights.
static GLUquadricObj *Quadric;
static GLuint Sphere;
static GLfloat LightPos[4] = {10.0, 10.0, 10.0, 1.0};
-static GLfloat Delta = 1.0;
-static GLint Mode = 0;
+static GLfloat Delta = 20.0;
+static GLint Mode = 4;
/*static GLfloat Blue[4] = {0.0, 0.0, 1.0, 1.0};*/
/*static GLfloat Gray[4] = {0.5, 0.5, 0.5, 1.0};*/
static GLfloat Black[4] = {0.0, 0.0, 0.0, 1.0};
static GLfloat White[4] = {1.0, 1.0, 1.0, 1.0};
+static GLboolean smooth = 1;
-
-static void Idle( void )
+static void
+Idle(void)
{
- LightPos[0] += Delta;
- if (LightPos[0]>15.0)
- Delta = -1.0;
- else if (LightPos[0]<-15.0)
- Delta = 1.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;
+ LightPos[0] += Delta * dt;
+ if (LightPos[0]>15.0 || LightPos[0]<-15.0)
+ Delta = -Delta;
glutPostRedisplay();
}
(void) x;
(void) y;
switch (key) {
- case 27:
- exit(0);
- break;
+ case 27:
+ exit(0);
+ break;
+ case 's':
+ smooth = !smooth;
+ if (smooth)
+ glShadeModel(GL_SMOOTH);
+ else
+ glShadeModel(GL_FLAT);
+ break;
}
glutPostRedisplay();
}
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, Black);
+ glShadeModel(GL_SMOOTH);
+
glMaterialfv(GL_FRONT, GL_DIFFUSE, White);
glMaterialfv(GL_FRONT, GL_SPECULAR, White);
glMaterialf(GL_FRONT, GL_SHININESS, 20.0);