функция opengl, которая отображается в функции обратного вызова ключа

Я использую OpenGL с помощью GLUT.
Я делаю свой собственный заголовочный файл с некоторыми функциями.
Одним из них является прямоугольник, где вы можете вводить цифры и сохранять их.
проблема здесь в том, что если я хочу знать, какая клавиша нажата, мне нужно поместить функцию в обратный вызов de keyboardFunc, но я также хочу отобразить прямоугольник, поэтому мне также нужно поместить его в обратный вызов дисплея, потому что вы можете ничего не рисовать в функции обратного вызова клавиатуры.

Я могу сделать две функции: одну для отображения прямоугольника и одну для клавиш, но я хочу одну функцию для обеих. Как я могу это сделать?

1

Решение

Вы не можете, как вы говорите сами. Вы должны использовать одну функцию для обработки событий клавиатуры и одну для рисования.

Что вы можете сделать, это сохранить все допустимые нажатия клавиш в глобальной переменной, а в функции отображения просто нарисовать их.

Если вы хотите, чтобы GLUT снова появился, вы можете позвонить glutPostRedisplay в функции обратного вызова клавиатуры.

1

Другие решения

GLFW — почти то же самое, что GLUT для всего, что вы хотите, но он не превращает все в кошмар, как делает GLUT. Вы можете контролировать свою функцию отображения! В GLFW вы можете определить свой собственный обратный вызов при нажатии клавиши. Этот обратный вызов может затем сохранить символ, нажатый в векторный или массив символов, если его фиксированная длина. После этого вы сможете визуализировать текст в цикле отображения. Будьте осторожны с доступом к текстовому массиву, вам может понадобиться некоторый контроль над этим.

1

По вопросам рекламы [email protected]