С помощью цветовых значений RGB устанавливается белый цвет фона окна изображения, как показано на рис. 2.61. Это делается с помощью функции OpenGL

glClearColor (1.0, 1.0, 1.0, 0.0); Первые три аргумента этой функции присваивают красной, зеленой и синей цветовым составляющим значение 1.0. Таким образом, получается белый цвет окна изображения. Если бы вместо 1.0 мы задали цвет каждого компонента равным

0.0, то получился бы черный фон. А если каждой из красной, зеленой и синей составляющей присвоить какие-то одинаковые промежуточные значения между 0.0 и 1.0, то мы бы получили некий оттенок серого цвета. Четвертый параметр в функции glClearColor называется альфа-фактором для заданного цвета. Одно из назначений альфа-фактора - это параметр “смешивания”. Когда активизируются операции смешивания пакета OpenGL, значение альфа-фактора может использоваться для определения результирующего цвета двух перекрывающихся объектов. Значение альфа-фактора 0.0 говорит о том, что объект полностью прозрачный, а значение альфа-фактора 1.0 указывает на непрозрачный объект. Некоторое время операции смешивания выполняться не будут, поэтому значение альфа несущественно для наших первых программ-примеров. Сейчас мы просто положим альфа-фактор равным 0.0.

Хотя команда glClearColor присваивает цвет окну изображения, она не помещает его на экран. Чтобы увидеть окно изображения на экране, нужно вызвать следующую функцию OpenGL.

glClear (GL_COLOR_BUFFER_BIT); Аргумент функции GL_COLOR_BUFFER_BIT является символьной константой OpenGL, указывающая на то, что в буфере цвета (буфере регенерации) находятся значения битов, которые следует присвоить переменным, указанным в функции glClearColor. (Другие буферы будут рассматриваться в последующих главах.)

Кроме определения цвета фона для окна изображения, можно выбирать различные цветовые схемы для объектов, которые мы хотим изобразить на экране. Для нашей первой программы-примера мы просто зададим цвет объекта как красный и отложим обсуждение различных цветовых опций до главы 4.

glColor3f (1.0, 0.0, 0.0); Суффикс 3f в функции glColor указывает на то, что мы задаем три цветовые составляющие RGB с помощью значений с плавающей запятой (floating point - f). Эти значения должны попадать в диапазон от 0.0 до 1.0. Таким образом, мы задаем красный цвет = 1.0, а зеленый цвет = синему цвету = 0.0.

Что касается нашей первой программы, то мы просто изображаем двухмерный отрезок прямой. Для этого нам нужно сообщить программе OpenGL, как мы хотим “спроектировать” наш рисунок на окно изображения, поскольку создание двухмерного изображения рассматривается программой OpenGL как частный случай трехмерного. Поэтому, несмотря на то, что мы всего лишь хотим изобразить очень простую двухмерную линию, OpenGL обрабатывает наш рисунок с помощью операций полной трехмерной визуализации. Мы можем задать вид проекции (режим) и другие параметры визуализации, которые нам нужны, с помощью следующих двух функций.

glMatrixMode (GL_PROJECTION); glu0rtho2D (0.0, 200.0, 0.0, 150.0); Это означает, что для отображения содержимого двухмерной (2D) прямоугольной области со внешними координатами на экран следует использовать ортогональную проекцию, и что значения координаты х этого прямоугольника должны лежать в диапазоне от 0.0 до 200.0, а значения координаты у - в диапазоне от 0.0 до 150.0. Какие бы объекты мы не задавали в пределах этого прямоугольника внешних координат, они будут попадать в окно изображения. Ничего из того, что находится за пределами этого диапазона координат, изображаться не будет. Итак, с помощью функции библиотеки GLU gluOrtho2D задается, что система координат окна изображения будет такой: точка с координатами (0.0, 0.0) находится в нижнем левом углу окна изображения, а точка с координатами (200.0, 150.0) - в верхнем правом углу окна. Поскольку мы описываем только двухмерный объект, действие ортогональной проекции будет ограничиваться “вставкой” нашего рисунка в окно изображения, которое мы задали раньше. Сейчас мы воспользуемся прямоугольником внешних координат с таким же характеристическим отношением, как и у окна изображения, так что наш рисунок искажаться не будет. Позже будет рассматриваться, как сохранить характеристическое отношение, которое не зависит от спецификации окна изображения.


⇐ вернуться назад | | далее ⇒