如何在OpenGL中使用glutPostRedisplay()函数时引入足够的延迟?

时间:2011-04-07 14:25:52

标签: opengl

void display(void)

{

     char text1[10],text2[10];
     int i;
     glPointSize(2.0);
     glClear(GL_COLOR_BUFFER_BIT);
      circle_draw(x1center,y1center,radius1);
      y1center-=5;
      while(y1center>=100)
      {
          glutPostRedisplay();
          y1center-=5;
      }
      glFlush();

}

我想沿垂直轴移动圆圈。 但是在使用glutPostRedisplay()函数时,我只能看到圆的初始和最终位置。过渡太快,无法看到。

1 个答案:

答案 0 :(得分:2)

void display(void)
{
     char text1[10],text2[10];
     int i;
     glPointSize(2.0);
     glClear(GL_COLOR_BUFFER_BIT);
     circle_draw(x1center,y1center,radius1);
     glFlush();
}

void update(int) { 
    if (y1center > 100) {
        y1center -= 5;
        glutPostRedisplay();
        glutTimerFunc(100, update, 0);
    }
}

int main() {
// ...

    glutTimerFunc(100, update, 0);

// ...
}