2017-02-22 53 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);

相關問題