2017-02-22 23 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, которые обрабатывают каждый выбор из меню средней кнопки в качестве примера. Для случая show/hide points я просто изменил значение integer 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);