Для обработки движения пера или курсора по планшету используется следующая функция.
glutTabletMotionFunc (tabletMotionFcn); Здесь вызванная функция имеет вид
void tabletMotionFcn (GLint xTablet, GLint yTablet)
Возвращенные значения xTablet и yTablet дают координаты поверхности планшета.
ФУНКЦИИ GLUT (-ПЕЙ-БОЛ)
Чтобы задать операцию в выбранном окне при активизации клавиши спейсбола, используется следующая функция.
glutSpaceballButtonFunc (spaceballFcn); Функция обратного вызова имеет два параметра:
void spaceballFcn (GLint spaceballButton, GLint action)
Кнопки спейсбола определяются с помощью тех же целых значений, что и для планшета, а параметру action присваивается значение GLUT_UP или GLUT_DOWN. Чис ло доступных клавиш спейсбола можно определить, вызвав процедуру glutDe-viceGet с аргументом GLUT_NUM_SPACEBALL_BUTTONS.
Трансляционное движение спейсбола при мыши в окне на экране дисплея записывается с помощью вызова функции
(spaceballTranlFcn) ; Трехмерные расстояния трансляции передаются вызванной функции, например, следующим образом.
void spaceballTranslFcn (GLint tx, GLint ty, GLint tz)
Данные расстояния трансляции нормируются в диапазон от -1000 до 1000. Аналогично вращение спейсбола записывается такой функцией
glutSpaceballRotateFunc (spaceballRotFcn); Наконец, используя функцию обратного вызова, можно получить углы трехмерного вращения.
void spaceballRotFcn (GLint thetaX, GLint thetaY, GLint thetaZ)
ФУНКЦИИ GLUT (ПОЛЕ КЛАВИШ)
Ввод с поля клавиш получается с помощью следующего оператора.
glutButtonBoxFunc (buttonBoxFcn); Активизация клавиши выполняется следующим образом:
void buttonBoxFcn (GLint button, GLint action); Для идентификации кнопок используются целые значения, а действия, выполняемые при нажатии клавиши, задаются как GLUT_UP или GLUT_DOWN.
ФУНКЦИИ GLUT (НАБОРНЫЕ ДИ-КИ)
Вращение диска можно записать с помощью следующей процедуры.
glutDialsFunc (dialsFcn); В этом случае функция обратного вызова используется для идентификации диска и получения угловой величины вращения.
void dialsFcn (GLint dial, GLint degreeValue); Цифры диска обозначаются целыми числами, и вращение диска дает целочисленное значение угла поворота в градусах.
УКАЗКИ В OpenGL
Указывая на точки на экране, в программе OpenGL можно интерактивно выбирать объекты. Однако операция использования указки в OpenGL не такая уж и прямолинейная.
По сути, чтобы указать на объект, используется обозначенное окно выбора, и формируется обновленный отображаемый объем. Объектам на сцене присваиваются целочисленные идентификаторы, и идентификаторы объектов, пересекающих обновленный отображаемый образ, записываются в массив буфера указки. -ледовательно, чтобы использовать возможности OpenGL в плане выбора с помощью указки, в программу нужно включить следующие процедуры.
• -оздать и отобразить сцену.
• Указать на точку экрана, и с помощью функции обратного вызова мыши выполнить следующее:
• подготовить буфер указки;
• активизировать операцию выбора с помощью указки (режим выбора);
• инициализировать стек идентификаторов объектов;