Все графические примитивы в OpenGL изображаются с атрибутами из списка текущего состояния. Изменение одного или нескольких атрибутов повлияет только на те примитивы, которые будут задаваться после изменения состояния OpenGL. Атрибуты примитивов, которые были описаны до смены состояния системы, не изменятся. Таким образом, можно изобразить зеленую линию, поменять текущий цвет на красный, и нарисовать еще один отрезок. В этом случае получится изображение и зеленой линии, и красного отрезка. Кроме того, некоторые значения параметров со стояния OpenGL могут задаваться внутри пары функций glBegin/glEnd вместе со значениями координат, так что настройки параметров могут меняться при переходе от одной точки к другой.
ЦВЕТ И ШКАЛА ЯРКОСТИ
Основной атрибут всех примитивов - это цвет. Пользователю могут предлагаться различные цветовые опции в зависимости от возможностей и целей конкретной системы. Цветовые опции могут задаваться численно, выбираться из меню или с помощью ползунков. Относительно монитора эти коды цвета затем преобразуются в настройки уровня интенсивности электронного луча, а для цветного графопостроителя эти коды позволяют управлять выделением краски или выбором пера.
ЦВЕТОВЫЕ КОМПОНЕНТЫ RGB
В цветных растровых системах количество возможных вариантов цветов зависит от объема памяти, который предоставляется для каждого пикселя в буфере кадра. Кроме того, информация о цвете может записываться в буфер кадра двумя способами: можно записывать коды RGB-цветов непосредственно в буфер кадра или же составлять отдельную таблицу из кодов цвета и использовать координаты пикселей для записи значений индексов, указывающих на содержимое цветовой таблицы. При прямой схеме записи, когда бы ни задавался определенный цветовой код в программе-приложении, информация об этом цвете будет помещаться в буфер кадра во всех положениях пикселей, составляющих примитив, который должен изображаться в этом цвете. Минимальное количество цветов при такой схеме можно получить при 3 бит памяти на один пиксель, как показано в табл. 4.1. Каждое из трех положений битов используется ТАБЛИЦА 4.1. Восемь кодов RGB-цвета для буфера кадра при 3 бит на пиксель
Код цвета Красный |
Зеленый |
Синий |
Изображаемый цвет | |
Черный | ||||
Синий | ||||
Зеленый | ||||
Голубой | ||||
Красный | ||||
Пурпурный | ||||
Желтый | ||||
Белый |
для управления уровнем интенсивности (в данном случае - положение “включено” либо положение “выключено”) соответствующей электронной пушки 1ШВ-монитора. Крайний слева бит служит для управления красной пушкой, средний бит управляет зеленой пушкой, а крайний справа бит - синей. Добавление большего числа битов на один пиксель увеличивает возможное количество доступных цветов. При 6 бит на один пиксель для каждой пушки можно использовать 2 бит. Это позволяет устанавливать четыре различных уровня интенсивности для каждой из трех цветовых пушек, и обеспечивать для каждого пикселя на экране 64 цветовых опции. При увеличении количества предлагаемых опций увеличивается также и объем памяти, необходимый для буфера кадра. При разрешении 1024 на 1024 пикселей для буфера кадра в полноцветной (24 бит на пиксель) 1ЮВ-системе необходимо 3 Мбайт памяти.