diff options
Diffstat (limited to 'progs/glsl/toyball.c')
-rw-r--r-- | progs/glsl/toyball.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/progs/glsl/toyball.c b/progs/glsl/toyball.c index 2d3462fc61e..cef52c04a6c 100644 --- a/progs/glsl/toyball.c +++ b/progs/glsl/toyball.c @@ -51,11 +51,22 @@ static struct uniform_info Uniforms[] = { }; static GLint win = 0; - +static GLboolean Anim = GL_FALSE; +static GLfloat TexRot = 0.0; static GLfloat xRot = 0.0f, yRot = 0.0f, zRot = 0.0f; static void +Idle(void) +{ + TexRot += 2.0; + if (TexRot > 360.0) + TexRot -= 360.0; + glutPostRedisplay(); +} + + +static void Redisplay(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -65,6 +76,11 @@ Redisplay(void) glRotatef(yRot, 0.0f, 1.0f, 0.0f); glRotatef(zRot, 0.0f, 0.0f, 1.0f); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glRotatef(TexRot, 0.0f, 1.0f, 0.0f); + glMatrixMode(GL_MODELVIEW); + glutSolidSphere(2.0, 20, 10); glPopMatrix(); @@ -106,6 +122,13 @@ Key(unsigned char key, int x, int y) (void) y; switch(key) { + case 'a': + Anim = !Anim; + if (Anim) + glutIdleFunc(Idle); + else + glutIdleFunc(NULL); + break; case 'z': zRot += step; break; |