diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2005-01-08 23:52:01 +0000 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2005-01-08 23:52:01 +0000 |
commit | c1065ee977f70042e54a930a6cd3af819d4a9806 (patch) | |
tree | 45053d22bc302bde8c627e9e8d2cc174a17c844a /progs/samples | |
parent | 0261042bebe4c17afd3b581fac0ab5274dac3740 (diff) |
compute reasonable animate rate (Marcelo Magallon)
Diffstat (limited to 'progs/samples')
-rw-r--r-- | progs/samples/olympic.c | 16 | ||||
-rw-r--r-- | progs/samples/sphere.c | 14 | ||||
-rw-r--r-- | progs/samples/star.c | 21 | ||||
-rw-r--r-- | progs/samples/stretch.c | 15 | ||||
-rw-r--r-- | progs/samples/wave.c | 19 |
5 files changed, 75 insertions, 10 deletions
diff --git a/progs/samples/olympic.c b/progs/samples/olympic.c index d1cfa7250f..5385e48702 100644 --- a/progs/samples/olympic.c +++ b/progs/samples/olympic.c @@ -108,7 +108,6 @@ void FillTorus(float rc, int numc, float rt, int numt) float Clamp(int iters_left, float t) { - if (iters_left < 3) { return 0.0; } @@ -119,6 +118,17 @@ void DrawScene(void) { int i, j; GLboolean goIdle; + static double t0 = -1.; + double t, dt; + t = glutGet(GLUT_ELAPSED_TIME) / 1000.; + if (t0 < 0.) + t0 = t; + dt = t - t0; + + if (dt < 1./30.) + return; + + t0 = t; goIdle = GL_TRUE; for (i = 0; i < RINGS; i++) { @@ -167,6 +177,10 @@ float MyRand(void) return 10.0 * ( (float) rand() / (float) RAND_MAX - 0.5 ); } +#if !defined(GLUTCALLBACK) +#define GLUTCALLBACK +#endif + void GLUTCALLBACK glut_post_redisplay_p(void) { glutPostRedisplay(); diff --git a/progs/samples/sphere.c b/progs/samples/sphere.c index cbe2cb1868..7d0508dee9 100644 --- a/progs/samples/sphere.c +++ b/progs/samples/sphere.c @@ -29,7 +29,7 @@ #include <math.h> #include <stdlib.h> #include <GL/glut.h> -#include "../util/readtex.c" +#include "readtex.h" #ifndef PI @@ -820,8 +820,16 @@ void Reshape(int width, int height) void Idle(void) { - xRotation += .75; - yRotation += .375; + static double t0 = -1.; + double t, dt; + t = glutGet(GLUT_ELAPSED_TIME) / 1000.; + if (t0 < 0.) + t0 = t; + dt = t - t0; + t0 = t; + + xRotation += .75*60.*dt; + yRotation += .375*60.*dt; glutPostRedisplay(); } diff --git a/progs/samples/star.c b/progs/samples/star.c index 570c3e19f9..2cf470e2a2 100644 --- a/progs/samples/star.c +++ b/progs/samples/star.c @@ -45,7 +45,7 @@ enum { #define MAXSTARS 400 #define MAXPOS 10000 -#define MAXWARP 10 +#define MAXWARP 500 #define MAXANGLES 6000 @@ -115,6 +115,13 @@ void MoveStars(void) { float offset; GLint n; + static double t0 = -1.; + double t, dt; + t = glutGet(GLUT_ELAPSED_TIME) / 1000.; + if (t0 < 0.) + t0 = t; + dt = 85.*(t - t0); + t0 = t; offset = speed * 60.0; @@ -122,10 +129,10 @@ void MoveStars(void) stars[n].x[1] = stars[n].x[0]; stars[n].y[1] = stars[n].y[0]; stars[n].z[1] = stars[n].z[0]; - stars[n].x[0] += stars[n].offsetX; - stars[n].y[0] += stars[n].offsetY; - stars[n].z[0] -= offset; - stars[n].rotation += stars[n].offsetR; + stars[n].x[0] += stars[n].offsetX*dt; + stars[n].y[0] += stars[n].offsetY*dt; + stars[n].z[0] -= offset*dt; + stars[n].rotation += stars[n].offsetR*dt; if (stars[n].rotation > MAXANGLES) { stars[n].rotation = 0.0; } @@ -296,6 +303,10 @@ static GLenum Args(int argc, char **argv) return GL_TRUE; } +#if !defined(GLUTCALLBACK) +#define GLUTCALLBACK +#endif + void GLUTCALLBACK glut_post_redisplay_p(void) { glutPostRedisplay(); diff --git a/progs/samples/stretch.c b/progs/samples/stretch.c index 9efa8e187e..1fd015d794 100644 --- a/progs/samples/stretch.c +++ b/progs/samples/stretch.c @@ -265,6 +265,17 @@ void Mouse(int button, int state, int mouseX, int mouseY) void Animate(void) { + static double t0 = -1.; + double t, dt; + t = glutGet(GLUT_ELAPSED_TIME) / 1000.; + if (t0 < 0.) + t0 = t; + dt = t - t0; + + if (dt < 1./60.) + return; + + t0 = t; switch (op) { case OP_STRETCH: @@ -307,6 +318,10 @@ static GLenum Args(int argc, char **argv) return GL_TRUE; } +#if !defined(GLUTCALLBACK) +#define GLUTCALLBACK +#endif + void GLUTCALLBACK glut_post_redisplay_p(void) { glutPostRedisplay(); diff --git a/progs/samples/wave.c b/progs/samples/wave.c index 7ded49bedc..d3c4687459 100644 --- a/progs/samples/wave.c +++ b/progs/samples/wave.c @@ -87,9 +87,26 @@ GLubyte contourTexture2[] = { 255, 127, 127, 127, }; +#if !defined(GLUTCALLBACK) +#define GLUTCALLBACK +#endif + + void GLUTCALLBACK glut_post_redisplay_p(void) { - glutPostRedisplay(); + static double t0 = -1.; + double t, dt; + t = glutGet(GLUT_ELAPSED_TIME) / 1000.; + if (t0 < 0.) + t0 = t; + dt = t - t0; + + if (dt < 1./30.) + return; + + t0 = t; + + glutPostRedisplay(); } static void Animate(void) |