glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB); Спецификация цветового режима GLUT_RGB эквивалентна GLUT_RGBA. Цвет фона для окна на экране дисплея выбирается в режиме RGB с помощью процедуры OpenGL
glClearColor (red, green, blue, alpha); В режиме цветового индекса цвет окна на экране дисплея задается командой
glClearlndex (index); Здесь параметру index присваивается значение, соответствующее положению в таблице цветов.
ИДЕНТИФИКАТОР GLUT ОКНА ИЗОБРАЖЕНИЯ
При необходимости в приложении можно создать несколько окон на экране дисплея, каждому из которых присваивается положительный целый идентификатор окна изображения, начиная со значения 1 для первого созданного окна. В момент инициации окна изображения его идентификатор можно записать с помощью выражения
windowID = glutCreateWindow ("A Display Window"); После того как целый идентификатор окна изображения записан в имени переменной windowID, это число можно использовать для изменения параметров дисплея или удаления окна с дисплея.
УДАЛЕНИЕ ОКНА GLUT С ЭКРАНА ДИСПЛЕЯ
Библиотека GLUT также включает функцию для удаления созданного окна с экрана. Если известен идентификатор окна, оно может удаляться с помощью такой команды.
glutDestroyWindow (windowID); ТЕКУЩЕЕ ОКНО НА ЭКРАНЕ GLUT
Если задана операция с окном на экране, она применяется к текущему окну, которым является либо последнее созданное окно на экране, либо окно, выбранное с помощью следующей команды.
glutSetWindow (windowID); Кроме того, в любой момент можно запросить систему и определить, какое окно является текущим:
currentWindowID = glutGetWindow ( ); Значение 0 возвращается этой функцией, если не существует окон на экране или если текущее окно на экране было удалено.
ЗАМЕЩЕНИЕ И ИЗМЕНЕНИЕ РАЗМЕРА ОКНА НА ЭКРАНЕ (GLUT)
Изменить положение текущего окна на экране можно с помощью команды
glutPositionWindow (xNewTopLeft, yNewTopLeft); Здесь координаты задают новое положение левого верхнего угла окна изображения относительно левого верхнего угла экрана. Подобным образом следующая функция обновляет размер текущего окна на экране.
glutReshapeWindow (dwNewWidth, dwNewHeight); Наконец, с помощью следующей команды можно расширить текущее окно на весь экран.
glutFullScreen ( ); Точный размер окна на экране после выполнения данной процедуры зависит от системы управления окнами. Кроме того, последующий вызов функции glutPositionWindow или glutReshapeWindow аннулирует запрос на расширение до полноэкранного размера.
При любом изменении размера окна может поменяться его характеристическое отношение, и объекты будут искажены по сравнению с первоначальными формами. Как отмечалось в разделе 3.24, изменение размеров окна на экране можно компенсировать с помощью следующего выражения.
glutReshapeFunc (winReshapeFcn); Данная процедура GLUT активизируется при изменении размера окна на экране, и новая ширина и высота передаются аргументу этой процедуры - в данном примере это функция winReshapeFcn. Следовательно, winReshapeFcn можно назвать “функцией обратного вызова” для “события изменения формы”. Затем данную функцию можно применить для обратного вызова, так изменив параметры поля просмотра, чтобы сохранялось исходное характеристическое отношение сцены. Кроме того, можно изменить границы отсекающего окна, цвет окна на экране, согласовать другие параметры наблюдения и выполнить другие задачи.