Glut Opengl对象不会动画

时间:2014-03-22 23:27:19

标签: c++ opengl glut

我的多边形不会移动,我尝试了很多东西,我认为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;
}

2 个答案:

答案 0 :(得分:0)

我认为你可能每两秒只移动一个非常小的增量位置,所以图像看起来是静态的,但事实并非如此,它只是变化很慢。尝试取出Sleep(1999),看看你的动画效果是否更好。

如果您需要随着时间的推移制作动画,最好使用glutGet(GLUT_ELAPSED_TIME)来计算自上一帧以来经过了多长时间并使用它来扩展您的增量。

答案 1 :(得分:0)

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