GLUT 菜单会导致 OpenGL 游戏出现问题?

GLUT menu creates problems with OpenGL game?

我正在尝试使用 GLUT 和 OpenGL 制作 2D 游戏。我使用的是单击鼠标右键弹出的菜单,菜单工作正常,但为了重新加载我的绘图功能,我必须再次单击右键。例如,如果通过单击按钮进行更改以查看更改,我必须再次单击。

int main(int argc,char **argv)
{
  glutInit(&argc, argv); 
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowPosition(50, 50);
  glutInitWindowSize(800, 800);
  glutCreateWindow("GAME"); 

  init(); 

  glutDisplayFunc(drawgame);
  glutMouseFunc(clickforaction);

  glutCreateMenu(MenuSelect);
  glutAddMenuEntry("Action",1);
  glutAddMenuEntry("Action2",2);
  glutAttachMenu(GLUT_RIGHT_BUTTON);

  glutMainLoop(); 
}

您必须在单击鼠标时更新显示。调用 glutPostRedisplay 将当前 window 标记为需要重新显示。

void clickforaction(int button, int state, int x, int y)
{
    // [...]

    glutPostRedisplay();
}