我正在使用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/