我正在使用GLUT和OPENGL在C中进行编程,我希望窗口一次又一次地重绘自身。我知道如果将glutPostRedisplay()放到Glut的空闲函数中,我的PC会滞后,我可以重新渲染。

我的代码在atm之后

void on_idle() {
    glutPostRedisplay();
}
void on_draw() {
    ...
    glClearColor(1.f, 1.f, 1.f, 1.f);
    glClear(GL_COLOR_BUFFER_BIT);
    ...
    glFlush();
}
int main(int argc, char** argv) {
    ...
    glutDisplayFunc(&on_draw);
    glutIdleFunc(&on_idle);
    ...
}

最佳答案

尝试这个:

void on_timer(int value) {
    glutPostRedisplay();
    glutTimerFunc(33, on_timer, 0);
}
void on_draw() {
    ...
    glClearColor(1.f, 1.f, 1.f, 1.f);
    glClear(GL_COLOR_BUFFER_BIT);
    ...
    glFlush();
}
int main(int argc, char** argv) {
    ...
    glutDisplayFunc(on_draw);
    glutTimerFunc(33, on_timer, 0)
    ...
}

关于c - opengl + glut glutPostRedisplay在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4608232/

10-13 07:43