-1
我有一个“绘图”功能,它目前只是使用一个交互文件来绘制基于用户点击鼠标的点。点的绘制工作正常,但我不知道如何根据用户命令“隐藏”点。目前,我有一个菜单设置,通过点击鼠标中键激活,一个选项是“显示/隐藏控制点”,但它不起作用。如何根据用户输入在OpenGL中显示/隐藏点?
我绘制点如下:
void draw(int mode)
{
unsigned int i;
// The following lines draw all the points
glColor3f (0.0, 1.0, 1.0);
glPointSize(5.0);
glBegin(GL_POINTS);
for (i=0; i<C->B.size(); i++)
glVertex2f(C->B[i].x, C->B[i].y);
glEnd();
}
最初,我曾试图限定的整数称为showCtrlPts
,其gloablly被设置为等于1我设置了selectMessage功能,其处理过的每个选择从中间的按钮菜单中作为一个例子。对于显示/隐藏点的情况,我只是改变了showCtrlPts整数的值,并认为这会做到这一点(见下文)。只有它不起作用,现在我对于如何进行有些遗憾。
void selectMessage(int msg)
{
switch (msg) {
case 1:
if (!C->B.empty())
C->B.clear();
glutPostRedisplay();
break;
case 2:
glutPositionWindow(50, 50);
glutReshapeWindow(600, 400);
break;
case 3:
glutFullScreen();
break;
case 4:
if (showCtrlPts == 1)
{
showCtrlPts = 0;
glColor3f(0.0, 0.0, 0.0);
}
if (showCtrlPts != 1)
{
showCtrlPts = 1;
glColor3f(0.0, 1.0, 1.0);
}
break;
case 10:
exit(0);
break;
default:
break;
}
glutPostRedisplay();
}
的'showCtrlPts'的做法是正确的道路要走。显示你如何使用这个变量。 – BDL
我已经在上面的代码中显示了它,在'case 4'下。我显然错过了一些东西,但我还没有弄清楚是什么。 – cl40
警告:[你正在学习一个非常过时的OpenGL版本](https://kos.gd/posts/dont-use-old-opengl/) – Kos