summaryrefslogtreecommitdiffstats
path: root/progs/glsl/toyball.c
diff options
context:
space:
mode:
Diffstat (limited to 'progs/glsl/toyball.c')
-rw-r--r--progs/glsl/toyball.c25
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;