【问题标题】:GLUT menu creates problems with OpenGL game?GLUT 菜单会导致 OpenGL 游戏出现问题?
【发布时间】:2019-11-18 18:20:27
【问题描述】:

我正在尝试使用 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?
  • 好吧,自从鼠标单击后刷新显示以来,我还没有在任何地方使用过,我认为问题在于功能的主要顺序。你认为我应该在哪里使用它?
  • 因此,通过将函数添加到我所做的更改的函数中,我设法解决了我的问题,而不是你有一个美好的一天!

标签: c opengl glut


【解决方案1】:

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

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

    glutPostRedisplay();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2016-04-17
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多