mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
Added d/D keys to change viewing distance, 'a' to toggle animation
This commit is contained in:
parent
3bfef64800
commit
e7007c6fb0
1 changed files with 29 additions and 6 deletions
|
|
@ -27,6 +27,9 @@ static GLint T0 = 0;
|
|||
static GLint Frames = 0;
|
||||
static GLint autoexit = 0;
|
||||
static GLint win = 0;
|
||||
static GLboolean Visible = GL_TRUE;
|
||||
static GLboolean Animate = GL_TRUE;
|
||||
static GLfloat viewDist = 40.0;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -179,6 +182,9 @@ draw(void)
|
|||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
glPushMatrix();
|
||||
|
||||
glTranslatef(0.0, 0.0, -viewDist);
|
||||
|
||||
glRotatef(view_rotx, 1.0, 0.0, 0.0);
|
||||
glRotatef(view_roty, 0.0, 1.0, 0.0);
|
||||
glRotatef(view_rotz, 0.0, 0.0, 1.0);
|
||||
|
|
@ -240,6 +246,15 @@ idle(void)
|
|||
glutPostRedisplay();
|
||||
}
|
||||
|
||||
static void
|
||||
update_idle_func(void)
|
||||
{
|
||||
if (Visible && Animate)
|
||||
glutIdleFunc(idle);
|
||||
else
|
||||
glutIdleFunc(NULL);
|
||||
}
|
||||
|
||||
/* change view angle, exit upon ESC */
|
||||
/* ARGSUSED1 */
|
||||
static void
|
||||
|
|
@ -252,6 +267,16 @@ key(unsigned char k, int x, int y)
|
|||
case 'Z':
|
||||
view_rotz -= 5.0;
|
||||
break;
|
||||
case 'd':
|
||||
viewDist += 1.0;
|
||||
break;
|
||||
case 'D':
|
||||
viewDist -= 1.0;
|
||||
break;
|
||||
case 'a':
|
||||
Animate = !Animate;
|
||||
update_idle_func();
|
||||
break;
|
||||
case 27: /* Escape */
|
||||
cleanup();
|
||||
exit(0);
|
||||
|
|
@ -297,8 +322,6 @@ reshape(int width, int height)
|
|||
glLoadIdentity();
|
||||
glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
glTranslatef(0.0, 0.0, -40.0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -351,13 +374,12 @@ init(int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
visible(int vis)
|
||||
{
|
||||
if (vis == GLUT_VISIBLE)
|
||||
glutIdleFunc(idle);
|
||||
else
|
||||
glutIdleFunc(NULL);
|
||||
Visible = vis;
|
||||
update_idle_func();
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
|
@ -375,6 +397,7 @@ int main(int argc, char *argv[])
|
|||
glutKeyboardFunc(key);
|
||||
glutSpecialFunc(special);
|
||||
glutVisibilityFunc(visible);
|
||||
update_idle_func();
|
||||
|
||||
glutMainLoop();
|
||||
return 0; /* ANSI C requires main to return int. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue