Skip to main content
 首页 » 编程设计

c之opengl+glut glutPostRedisplay在哪里

2023年11月29日17zhwl

我正在使用 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) 
    ... 
}