egl: eglinfo load i915 driver
[mesa.git] / progs / demos / spectex.c
index 68de85ca054d6e9467d1290dfffc7259502280db..6ab1191579c3be6d41e43329c40e84c8e2a057b7 100644 (file)
@@ -1,4 +1,3 @@
-/* $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();
 }
@@ -140,9 +144,16 @@ static void Key( unsigned char key, int x, int y )
    (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();
 }
@@ -172,6 +183,8 @@ static void Init( void )
    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);