НАБЛЮДЕНИЕ ГРАФИЧЕСКИХ ОБЪЕКТОВ В ОКНЕ ЭКРАНА GLUT
После создания окна на экране и выбора его положения, размера, цвета и других характеристик указывается, что будет показано в этом окне. Если на экране было создано несколько окон, требуемое окно вначале обозначается как текущее. Затем, чтобы присвоить что-то этому окну, вызывается следующая функция.
glutDisplayFunc (pictureDescrip); Аргумент - это процедура, описывающая, что будет изображено в текущем окне. Данная процедура (в приведенном примере - с именем pictureDescrip) называется функцией обратного вызова, поскольку она будет выполняться, когда GLUT решит, что содержимое окна на экране нужно обновить. Процедура pictureDescrip обычно содержит примитивы и параметры OpenGL, определяющие изображение, хотя она может задавать другие конструкции, такие как изображение меню.
Если на экране задано несколько окон, описанный процесс повторяется для каждого окна или субокна. Кроме того, может потребоваться вызвать glutDisplayFunc после команды glutPopWindow, если окно на экране было повреждено при повторном изображении окон. В этом случае используется следующая функция, чтобы указать, что содержимое текущего окна на экране нужно обновить.
glutPostRedisplay ( ); Данная процедура также используется, когда в окне на экране нужно показать такой дополнительный объект, как всплывающее меню.
ВЫПОЛНЕНИЕ ПРИКЛАДНОЙ ПРОГРАММЫ
Когда настройка программы завершена, и окна на экране созданы и инициализированы, нужно выполнить конечную команду GLUT, которая сообщает о выполнении программы.
glutMainLoop ( ); В этот момент окна экрана и их графическое содержимое посылаются на экран. Программа также вводит цикл обработки GLUT, который постоянно проверяет на наличие новых “событий”, таких как интерактивный ввод мышью или ввод с графического планшета.
ДРУГИЕ ФУНКЦИИ GLUT
Библиотека GLUT предлагает множество разнообразных процедур обработки процессов, зависящих от системы, дополняя основную библиотеку OpenGL. Например, данная библиотека содержит функции для генерации растровых и эскизных символов (раздел 3.21), и она предоставляет функции загрузки значений в таблицу цветов (раз дел 4.3). Кроме того, некоторые функции GLUT, рассмотренные в главе 8, позволяют отображать трехмерные объекты либо как объемные тела, либо в форме каркасного представления. Данные объекты включают сферу, тор, пять правильных многогранников (куб, тетраэдр, октаэдр, додекаэдр и икосаэдр).
Иногда бывает удобно задать такую функцию, которая будет выполняться при отсутствии иных событий, которые обрабатывает система. Это делается так.
glutldleFunc (function); Параметром этой процедуры GLUT может быть фоновая функция или процедура, обновляющая параметры анимации, когда нет других процессов.
Кроме того, существуют функции GLUT, рассмотренные в главе 11, которые предназначены для получения и обработки интерактивного ввода, а также создания меню и управления ими. GLUT предлагает отдельные процедуры для разных устройств ввода, таких как мышь, клавиатура, графический планшет, пространственный манипулятор (spaceball).