У меня есть функция «рисования», которая в настоящее время просто использует файл взаимодействия для рисования очков на основе щелчка левой кнопкой мыши от пользователя. Чертеж точек работает отлично, но я не могу понять, как «скрыть» точки на основе пользовательской команды. В настоящее время у меня есть настройка меню, которая активируется средним щелчком мыши, и один из вариантов - «Показать/скрыть контрольные точки», но это не сработает.Как показать/скрыть точки в 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();
}
Параметр 'showCtrlPts' подход является правильным путем. Покажите, как вы использовали эту переменную. – BDL
Я показал это в коде выше, под 'case 4'. Я, очевидно, что-то пропустил, но я еще не понял, что это такое. – cl40
предупреждение: [вы пытаетесь изучить очень устаревшую версию OpenGL] (https://kos.gd/posts/dont-use-old-opengl/) – Kos