Для обработки движения пера или курсора по планшету используется следующая функция.

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 в плане выбора с помощью указки, в программу нужно включить следующие процедуры.

• -оздать и отобразить сцену.

• Указать на точку экрана, и с помощью функции обратного вызова мыши выполнить следующее:

• подготовить буфер указки;

• активизировать операцию выбора с помощью указки (режим выбора);

• инициализировать стек идентификаторов объектов;


⇐ вернуться назад | | далее ⇒