Help on glutIdleFunc

Can somebosy please give me an example on how to use glutIdleFunc(display) because I am trying to remove the FOR loop that currently annimates my prog within the display function.

thanks

Vasilis

Have you looked at the example code/apps that you get in the sdk?

gav

An example of a glutIdleFunc that I use in one of my programs :

void anim(void)
{
static bool drawn;
if(!pause)
{
angle += sign ;
if (angle >= 360.0)
angle -= 360.0 ;
glutPostRedisplay(); // This actually forces glut to call your display function in the next loop;
drawn = false;
}
else
{
if(!drawn)
{
glutPostRedisplay(); // idem
drawn = true;
}
}
}

It’s registered here :
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize (200, 170);
glutInitWindowPosition (580, 40);
glutCreateWindow (“Whatever”);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(anim); // here it is.
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}

How about sth more simpler?
I have been doing this and I want to get rid of the FOR loop and use the IdleFunc…Can you improvise??
Thanks

#include <windows.h>
#include <GL/gl.h>
#include <glut.h>

void display(void){
float angle=0;

glMatrixMode(GL_MODELVIEW);
for(angle=0;angle&lt;=10000;angle++){
  glLoadIdentity();       
  glTranslatef(0,0,0);    
  glRotatef(angle,0,0,1); 
  glTranslatef(0,0,0);    
  glRotatef(angle,0,0,1);
  glBegin(GL_POLYGON) ;
    glColor3f(0.0,0.0,0.0);
    glVertex2f(-15.0,-15.0);
    glColor3f(1.0,0.0,0.0);
    glVertex2f(15.0,-15.0);
    glColor3f(0.0,1.0,0.0);
    glVertex2f(15.0,15.0);
    glColor3f(0.0,0.0,1.0);
    glVertex2f(-15.0,15.0);        
  glEnd();
  glutSwapBuffers();
  glClear(GL_COLOR_BUFFER_BIT);
}

}

void init(void){
glClearColor(1.0, 1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200.0, 200.0, -200.0, 200.0, -100.0, 100.0);
}

int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(401, 401);
glutInitWindowPosition(100,100);
glutCreateWindow(“Rotating a Square”);
glutDisplayFunc(display);
// glutIdleFunc(display);
init();
glutMainLoop();
return 0;
}

[This message has been edited by Vasilis (edited 11-23-2000).]

Now now vasilis you shouldnt be asking others to write your university assignments for you!!!

try romving the loop and putting the angle as a global variable. increment the angle within the display func as the last line. put the glutidlefunc just before the mainloop call and remove the return 0;
might help

you were lucky by the way we hit the post atleast twice.

thanks for the help matey…
I got it working before you told me actually…

I’ll try to fix the second moon by the way ;o)

And u did get the bar 3 times so it could have benn 2-5…but thank god it wasn’t…
But I’m optiomistic for the return game…

[This message has been edited by Vasilis (edited 11-23-2000).]