打开GL对象不会动画

Glut Open GL object wont animate

本文关键字:动画 对象 GL 打开      更新时间:2023-10-16

我的多边形不会移动,我尝试了很多东西,我认为glClear(GL_COLOR_BUFFER_BIT);glutMainLoop();不会做他们的工作。第一张图片保持不变。没有动画。

float x=0;
float y=0;
float b=0;
void displayCB(void) 
{
    glClear(GL_COLOR_BUFFER_BIT);
    kvadrat();
}
void kvadrat()
{
    glBegin(GL_POLYGON);
    glColor3f(1, 0, 0); glVertex2d(0.5-x, 0.5-y);
    glColor3f(1, 0, 0); glVertex2d(0.5-x, -0.5-y);
    glColor3f(1, 0, 0); glVertex2d(-0.5-x, -0.5-y);
    glColor3f(1, 0, 0); glVertex2d(-0.5-x, 0.5-y);
    glEnd();
    Sleep(1999);
    glFlush();
    x=x+0.01; // I modified this value so it will always be between 0.5 and -0.5,     
             //this is just example
}
int main(int argc, char *argv[])
{
    int win;
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(800,600);
    win = glutCreateWindow("Elementi");
    glClearColor(0.0,0.0,0.0,0.0);
    glutDisplayFunc(displayCB);
    glutKeyboardFunc(keyCB);
    glutMainLoop();
    return 0;
}

我认为你可能移动的位置只有一个非常小的增量每两秒钟,所以图像看起来是静态的,但它不是,它只是变化非常缓慢。试着去掉Sleep(1999),看看你的动画效果是否更好。

如果你需要随时间动画,最好使用glutGet(GLUT_ELAPSED_TIME)来计算自上一帧以来经过了多少时间,并使用它来缩放你的增量。

我修复了glutPostRedisplay();的问题//通知GLUT显示已经改变