glutMainLoopO: // enter the unending main loop // входим в бесконечный главный цикл }

all of the callback functions are defined here II здесь определены все функции обратного вызова О glutDisplayFuncCmyDisplay). Когда система решает, что какое-нибудь окно на экране подлежит перерисовке, она создает событие « redraw* (обновить). Это имеет место при первом открытии окна, а также когда окно вновь становится видимым, когда другое окно перестало его заслонять. В данном случае функция myDi spl ау() зарегистрирована в качестве функции обратного вызова для события обновления.

О gl utReshapeFunc(myReshape). Форма экранного окна может быть изменена (reshape) пользователем, обычно путем захвата мышью угла окна и смещения его с помощью мыши (простое перемещение окна не приводит к событию «изменение формы».) В данном случае функция myReshapeO зарегистрирована с событием изменения формы окна. Как мы увидим дальше, функции myReshapeO автоматически передаются аргументы, информирующие о новой ширине и высоте изменившего свою форму окна.

О glutMouseFunc(myMouse). Когда нажимают или отпускают одну из кнопок мыши, то возникает событие «мышь» (mouse). В данном случае функция myMouseO зарегистрирована в качестве функции, которая будет вызываться всякий раз, когда произойдет событие «мышь». Функции myMouseO автоматически передаются аргументы, описывающие местоположение мыши, а также вид действия, вызываемого нажатием кнопки мыши.

О glutKeyboardFunc(myKeyboard). Эта команда регистрирует функцию myKeyboardO для события, заключающегося в нажатии или отпускании какой-либо клавиши на клавиатуре. Функции myKeyboardO автоматически передаются аргументы, сообщающие, какая клавиша была нажата. Для удобства этой функции также передается информация о положении мыши в момент нажатия клавиши.

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


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