我正在使用 GLUT 和 OPENGL 进行 C 语言编程,我希望我的窗口能够一次又一次地重新绘制。我知道如果我将其放入 Glut 的空闲函数中,我可以使用 glutPostRedisplay() 重新渲染,但我的电脑会出现延迟。
我的代码遵循 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)
...
}