我创建了一个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;
}
}
答案 0 :(得分:2)
根据您的代码:
if (gridActive != true)
{
drawGrid();
gridActive = true;
}
您只在gridActive
为false时绘制网格。但是,每次绘制之后,都会设置gridActive=true
,然后停止绘制它。
答案 1 :(得分:0)
如果没有更多的代码,就不可能确切地说出正在发生的事情,但这些行可能没有按照您的想法行事,这可能会导致一些问题。
这从来没有做过任何事情。
if (gridActive == true)
{
gridActive = true;
}
此:
if (gridActive == true)
{
gridActive = false;
}
与:
相同gridActive = false;
为了说明发生了什么,我们需要知道当exit
来电时你点击鼠标按钮会发生什么,但你没有'发布该代码。
另外,我不太清楚你的意思:
我创建了一个名为gridActive的全局变量,没有true或false值,因此每次都不会重置
但听起来你做了一个未初始化的全局变量,并期望它有一些特定的含义,因为它未初始化?