2017-02-22 86 views
-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(); 
} 
+0

的'showCtrlPts'的做法是正确的道路要走。显示你如何使用这个变量。 – BDL

+0

我已经在上面的代码中显示了它,在'case 4'下。我显然错过了一些东西,但我还没有弄清楚是什么。 – cl40

+0

警告:[你正在学习一个非常过时的OpenGL版本](https://kos.gd/posts/dont-use-old-opengl/) – Kos

回答

0

在功能void draw(int mode) 注释行glColor3f (0.0, 1.0, 1.0);