animation rate patch (Marcello Magallon)
This commit is contained in:
parent
1b058a06c2
commit
429efa9f00
|
@ -49,7 +49,7 @@
|
|||
|
||||
#define MAXZ 8.0
|
||||
#define MINZ -8.0
|
||||
#define ZINC 0.4
|
||||
#define ZINC 4.
|
||||
|
||||
static float solidZ = MAXZ;
|
||||
static float transparentZ = MINZ;
|
||||
|
@ -130,11 +130,21 @@ void reshape(int w, int h)
|
|||
|
||||
void animate(void)
|
||||
{
|
||||
static double t0 = -1.;
|
||||
if (solidZ <= MINZ || transparentZ >= MAXZ)
|
||||
{
|
||||
glutIdleFunc(NULL);
|
||||
t0 = -1.;
|
||||
}
|
||||
else {
|
||||
solidZ -= ZINC;
|
||||
transparentZ += ZINC;
|
||||
double t, dt;
|
||||
t = glutGet(GLUT_ELAPSED_TIME) / 1000.;
|
||||
if (t0 < 0.)
|
||||
t0 = t;
|
||||
dt = t - t0;
|
||||
t0 = t;
|
||||
solidZ -= ZINC*dt;
|
||||
transparentZ += ZINC*dt;
|
||||
glutPostRedisplay();
|
||||
}
|
||||
}
|
||||
|
@ -163,7 +173,7 @@ void keyboard(unsigned char key, int x, int y)
|
|||
int main(int argc, char** argv)
|
||||
{
|
||||
glutInit(&argc, argv);
|
||||
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
|
||||
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
|
||||
glutInitWindowSize(500, 500);
|
||||
glutCreateWindow(argv[0]);
|
||||
init();
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include <stdlib.h>
|
||||
|
||||
static GLfloat spin = 0.0;
|
||||
static GLdouble t0 = 0.;
|
||||
|
||||
void display(void)
|
||||
{
|
||||
|
@ -58,9 +59,18 @@ void display(void)
|
|||
glutSwapBuffers();
|
||||
}
|
||||
|
||||
GLdouble gettime(void)
|
||||
{
|
||||
return (GLdouble)(glutGet(GLUT_ELAPSED_TIME)) / 1000.;
|
||||
}
|
||||
|
||||
void spinDisplay(void)
|
||||
{
|
||||
spin = spin + 2.0;
|
||||
GLdouble t, dt;
|
||||
t = gettime();
|
||||
dt = t - t0;
|
||||
t0 = t;
|
||||
spin = spin + 120.0*dt;
|
||||
if (spin > 360.0)
|
||||
spin = spin - 360.0;
|
||||
glutPostRedisplay();
|
||||
|
@ -88,7 +98,10 @@ void mouse(int button, int state, int x, int y)
|
|||
switch (button) {
|
||||
case GLUT_LEFT_BUTTON:
|
||||
if (state == GLUT_DOWN)
|
||||
{
|
||||
t0 = gettime();
|
||||
glutIdleFunc(spinDisplay);
|
||||
}
|
||||
break;
|
||||
case GLUT_MIDDLE_BUTTON:
|
||||
if (state == GLUT_DOWN)
|
||||
|
|
Loading…
Reference in New Issue