在glutKeyboardFunc中所做的OpenGL状态更改不会立即可见

OpenGL state changes made in glutKeyboardFunc are not visible immediately

本文关键字:状态 glutKeyboardFunc OpenGL      更新时间:2023-10-16

我有一个函数glutKeyboardFunc(keyboard),其中键盘有:

void keyboard(unsigned char key, int x, int y){
    float alpha = 1.0;
    switch(key){
    case 'c':
        glClearColor(1,0,0,alpha);
        printf("success");
        break;
    }
}

这是函数的摘要;它工作正常,但只有在发生其他操作后。 例如,printf 语句在击键"c"时立即报告成功,但在我单击画布上的其他地方之前,背景颜色不会变为活动状态。 我希望所有击键都能立即生效。

您需要刷新屏幕:

void keyboard(unsigned char key, int x, int y){
    float alpha = 1.0;
    switch(key){
    case 'c':
        glClearColor(1,0,0,alpha);
        printf("success");
        glutPostRedisplay(); // trigger the screen redisplay
        break;
    }
}