C++ OpenGL-鼠标左键单击可继续删除我的网格

C++ OpenGL-鼠标左键单击可继续删除我的网格,c++,opengl,visual-c++,glut,C++,Opengl,Visual C++,Glut,我创建了一个drawGrid()函数,可以沿X轴和Y轴绘制一个正方形网格,效果很好。然后,我创建了一个menu()函数(在main()中调用),用于打开和关闭网格,下面是代码: void menu(int item) { switch (item) { case MENU_SWITCH_OFF_GRID: { if (gridActive == true) { grid

我创建了一个
drawGrid()
函数,可以沿X轴和Y轴绘制一个正方形网格,效果很好。然后,我创建了一个
menu()
函数(在
main()
中调用),用于打开和关闭网格,下面是代码:

void menu(int item)
{
    switch (item)
    {
        case MENU_SWITCH_OFF_GRID:
        {
            if (gridActive == true)
            {
                gridActive = true;
            }
        }
        break;
        case MENU_SWITCH_ON_GRID:
        {
            if (gridActive == true)
            {
                gridActive = false;
            }
        }
        break;
        default:
            {       /* Nothing */       }
        break;
        }

        glutPostRedisplay();

        return;
    }
}
菜单开关工作正常,因为我创建了一个名为
gridActive
的全局变量,没有
true
false
值,所以它不会每次重置,这样就可以在我的
display()
函数中访问它,如下所示:

if (gridActive != true)
{
    drawGrid();
    gridActive = true;  
}
所有这些都很好

我的问题是什么?

我的问题是,每当我点击鼠标左键,我的网格就会消失,这是我不想要的。所以我做了一个
mouse()
函数如下:

case GLUT_LEFT_BUTTON:  if (state == GLUT_DOWN)
                        {
                            exit(0);  // this has been added to see if 
                                          // my program will exit!
                        }
                        break;
测试我的程序在单击鼠标左键时是否退出,并退出。

因此,不使用
exit(0)我可以在这里放置什么代码,以便在单击鼠标左键时网格不会消失?还是问题就在这之外

更新

以下是鼠标功能:

void mouse(int button, int state, int x, int y)
{
    // these have simply been set-up for me to use
    // in the future
    switch (button)
    {
        case GLUT_LEFT_BUTTON:  if (state == GLUT_DOWN)
                                {

                                }
                                break;

        case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN)
                                { 

                                }
                                break;
        default: break;

    }
}

如果没有更多的代码,就不可能准确地知道发生了什么,但是这些行可能没有按照您认为的那样执行,这可能会导致一些问题

这根本没用

 if (gridActive == true)
            {
                gridActive = true;
            }
这:

同:

gridActive = false;
但是,为了告诉我们发生了什么,我们需要知道当
退出调用不存在,但您尚未发布该代码时,单击鼠标按钮会发生什么

另外,我不太明白你所说的:

我创建了一个名为gridActive的全局变量,它没有真值或假值,因此不会每次重置

但听起来好像您创建了一个未初始化的全局变量,并期望它有一些特定的含义,因为它是未初始化的?

基于您的代码:

if (gridActive != true)
{
    drawGrid();
    gridActive = true;  
}

只有当
gridActive
为false时,才能绘制网格。但是,每次绘制之后,您都会设置
gridActive=true
,这样就可以停止绘制它。

if语句是正确的,所以我删除了它们,运行了代码,并获得了相同的预期输出。此外,当我删除退出调用时,网格会消失。@BenTanos当删除
exit
调用时,单击鼠标按钮时运行的代码是什么?之前,当我给全局变量一个true或false值时,它会一直重置回该值,我不应该这样做吗?在你有一行的函数中发布代码:case GLUT\u LEFT\u button尽管不确定这与按下按钮有什么关系,除非你只在按下按钮时绘制。
if (gridActive != true)
{
    drawGrid();
    gridActive = true;  
}