如何在GLUT中弹出菜单处于活动状态时强制渲染

时间:2017-04-24 21:49:23

标签: c++ opengl glut

我注意到如果弹出菜单处于活动状态,渲染过程将被冻结,直到我点击菜单。我已经搜索了这个问题并提出了这个功能

void glutMenuStatusFunc(void (*func)(int status, int x, int y);

使用这些标志GLUT_MENU_IN_USE or GLUT_MENU_NOT_IN_USE,我可以判断菜单是否处于活动状态。我尝试做的是在菜单处于活动状态时强制渲染。这就是我所做的

int main(int argc, char **argv) 
{
    ...
    glutDisplayFunc(render);
    glutIdleFunc(glutIdle);
    glutMenuStatusFunc(MenuStatus);
    glutMainLoop();

    return 0;
}

MenuStatus

void MenuStatus(int status,int x, int y)
{
    if ( status == GLUT_MENU_IN_USE )
        glutPostRedisplay();
}

使用此解决方案glutPostRedisplay()会触发一次。如果我运行while(),应用程序将冻结。有关如何在弹出菜单处于活动状态时连续强制渲染的任何建议吗?

0 个答案:

没有答案