progs/tests: add x/y rotation to cylwrap.c
authorBrian Paul <brianp@vmware.com>
Fri, 5 Feb 2010 17:21:15 +0000 (10:21 -0700)
committerMichal Krol <michal@vmware.com>
Tue, 9 Feb 2010 14:33:00 +0000 (15:33 +0100)
progs/tests/cylwrap.c

index 9d541e319f82b647da769801205465373a8d8b1c..95d464493792171a1ae92f0f5a08ca4762c2995c 100644 (file)
@@ -10,6 +10,7 @@
 
 static int Win;
 static int WinWidth = 600, WinHeight = 400;
+static GLfloat Xrot = 0, Yrot = 0;
 static GLboolean CylWrap = GL_TRUE;
 
 
@@ -83,20 +84,26 @@ Draw(void)
    glClear(GL_COLOR_BUFFER_BIT);
 
    glPushMatrix();
-      glTranslatef(0, +1.2, 0);
-      DrawSample(GL_FALSE);
-   glPopMatrix();
+      glRotatef(Xrot, 1, 0, 0);
+      glRotatef(Yrot, 0, 1, 0);
 
-   /* set Mesa back-door state for testing cylindrical wrap mode */
-   if (CylWrap)
-      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.125);
+      glPushMatrix();
+         glTranslatef(0, +1.2, 0);
+         DrawSample(GL_FALSE);
+      glPopMatrix();
 
-   glPushMatrix();
-      glTranslatef(0, -1.2, 0);
-      DrawSample(GL_TRUE);
-   glPopMatrix();
+      /* set Mesa back-door state for testing cylindrical wrap mode */
+      if (CylWrap)
+         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.125);
+
+      glPushMatrix();
+         glTranslatef(0, -1.2, 0);
+         DrawSample(GL_TRUE);
+      glPopMatrix();
+
+      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0);
 
-   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0);
+   glPopMatrix();
 
    glutSwapBuffers();
 }
@@ -110,17 +117,16 @@ Reshape(int width, int height)
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
-   glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
+   glFrustum(-1.0, 1.0, -1.0, 1.0, 3.0, 25.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
-   glTranslatef(0.0, 0.0, -15.0);
+   glTranslatef(0.0, 0.0, -10.0);
 }
 
 
 static void
 Key(unsigned char key, int x, int y)
 {
-   const GLfloat step = 3.0;
    (void) x;
    (void) y;
    switch (key) {
@@ -141,6 +147,30 @@ Key(unsigned char key, int x, int y)
 }
 
 
+static void
+SpecialKey(int key, int x, int y)
+{
+   const GLfloat step = 3.0;
+   (void) x;
+   (void) y;
+   switch (key) {
+   case GLUT_KEY_UP:
+      Xrot -= step;
+      break;
+   case GLUT_KEY_DOWN:
+      Xrot += step;
+      break;
+   case GLUT_KEY_LEFT:
+      Yrot -= step;
+      break;
+   case GLUT_KEY_RIGHT:
+      Yrot += step;
+      break;
+   }
+   glutPostRedisplay();
+}
+
+
 static void
 MakeSineWaveTexture(void)
 {
@@ -196,6 +226,7 @@ main(int argc, char *argv[])
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    Win = glutCreateWindow(argv[0]);
    glutReshapeFunc(Reshape);
+   glutSpecialFunc(SpecialKey);
    glutKeyboardFunc(Key);
    glutDisplayFunc(Draw);
    Init();