glutDisplayFunc (lineSegment); Но окна изображения еще нет на экране. Чтобы завершить операции по обработке окна, нам нужна еще одна функция из библиотеки GLUT. После выполнения следующего оператора активизируются все окна изображений, которые были созданы, вместе со своим графическим содержимым.
glutMainLoop ( ); Эта функция должна стоять на последнем месте в программе. Она служит для изображения начальных графических элементов и вводит программу в бесконечный цикл, в котором проверяются входные данные, поступающие от таких устройств, как мышь или клавиатура. Наш первый пример не будет интерактивным, поэтому программа будет просто продолжать изображать заданную картинку до тех пор, пока мы не закроем окно изображения. В последующих главах мы рассмотрим, как можно модифицировать наши программы OpenGL, чтобы можно было работать с интерактивным вводом.
Несмотря на то что местоположение и размер созданного нами окна изображения определяется по умолчанию, эти параметры можно задать с помощью дополнительных функций библиотеки GLUT. Функция glutlnitWindowPosition используется для задания исходного положения левого верхнего угла окна изображения. Это положение определяется через целые значения координат экрана. Начало отсчета находится в верхнем левом углу экрана. Например, с помощью следующего оператора задается, что верхний левый угол окна изображения должен находиться на 50 пикселей вправо от левого края и на 100 пикселей вниз от верхнего края экрана.
glutlnitWindowPosition (50, 100); Аналогично функция glutlnitWindowSize используется для того, чтобы задать изначальную ширину и высоту окна изображения в пикселях. Таким образом, мы задаем окно изображения с изначальной шириной и высотой в 300 пикселей (рис. 2.61) с помощью оператора
glutlnitWindowSize (400, 300); После того как окно изображения появилось на экране, можно изменить его расположение и размер.
Рис. 2.61. Окно изображения размером 400 на 300, которое находится в точке (50, 100) относительно верхнего левого угла экрана Можно также задать ряд других опций окна изображения, таких как буферизация и выбор цветового режима, использовав функцию glutlnitDisplayMode. Аргументами этой функции выступают символьные константы библиотеки GLUT. Например, с помощью следующей команды задается, что для окна изображения будет использоваться один буфер регенерации, а для выбора цветовых значений - цветовой режим RGB (красный, зеленый, синий).
glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB); Значения постоянных, которые передаются этой функции, объединяются с помощью логической операции ИЛИ. В действительности однократная буферизация и цветовой ражим RGB задаются по умолчанию. Но сейчас мы воспользуемся этой функцией, чтобы напомнить о том, что это опции, выбранные для нашего изображения. Позже мы подробнее рассмотрим цветовые режимы, а также другие опции изображения, такие как двойная буферизация для приложений, связанных с анимацией, и выбор параметров для изображения трехмерных сцен.
ПОЛНАЯ ПРОГРАММА OpenGL
Еще осталось несколько задач, которые необходимо выполнить для того, чтобы собрать все, что нужно для полной программы. Следует выбрать цвет фона для окна изображения, а также создать процедуру, в которой содержатся функции, подходящие для того рисунка, который мы хотим изобразить.