Метод связи функции обратного вызова с определенным типом события часто полностью зависит от системы. Однако вместе с OpenGL поставляется набор утилит (Utility Toolkit) (см. приложение А), в котором предусмотрены программные средства для того, чтобы помочь в организации управления событиями. Например, команда

gl utMouseFunc(myMouse):
// register the mouse action function

// функция для регистрации действий мыши регистрирует функцию myMouseO в качестве функции, подлежащей выполнению при возникновении события «мышь». Префикс «glut» показывает, что данная функция является частью OpenGL Utility Toolkit. Программист размещает в myMouseO код для обработки всех возможных действий мыши, которые представляют для него интерес.

В листинге 2.1 приведен скелет примерной функции mainO для программы, управляемой событиями. Большинство наших программ в данной книге будут основываться на этой структуре. Существует четыре основных типа событий, с которыми мы будем работать, а «gluU-функции доступны каждому.

Листинг 2.1. Структура управляемой событиями программы, использующей OpenLG void mainO {

initialize things1

1 Замечания, выделенные курсивом внутри фрагментов исходного кода, представляют собой скорее псевдокод, чем настоящий программный код. Эти замечания предполагают действия, которые должен выполнять в этом месте подразумеваемый реальный код.

2.1. Начальная стадия создания изображения

// инициализируем все. что необходимо

create a screen windou II создаем экранное окно

glutDisplayFunc(myDi splay): // register the redraw function // регистрируем функцию обновления окна

glutReshapeFunc(myReshape); // register the reshape function // регистрируем функцию изменения формы

glutMouseFunc(myMouse); // register the rouse action function // регистрируем функцию реакции на действия мыши

glutKeyboardFunc(myKeyboard): // register the keyboard action function // регистрируем функцию реакции на действия // клавиатуры

perhaps initialise other things II при необходимости инициализируем что-то еще


⇐ Предыдущая| |Следующая ⇒