glClearColor(1.0, 1.0, 1.0, 1.0);

настраивает белый цвет заполнения, поскольку первые три аргумента - цветовые компоненты RGB - равны 1.0, и режим непрозрачности, поскольку альфа-компонент также равен 1.0. Теперь после вызова функции glClear( ) окно окрасится в белый цвет и станет непрозрачным.

2.4.2. Индексируемый цвет

Во множестве графических систем используется буфер кадра с ограниченной глубиной. Например, в системе может использоваться буфер, рассчитанный на разрешение 1280x1024 пикселей, но каждый пиксель имеет только 8-битовый код засветки. Можно было бы разделить эти 8 бит на более мелкие группы и назначить по одной такой группе на каждый из первичных цветов - красный, зеленый и синий. Но такая технология, во-первых, слишком ограничивает возможности цветопередачи в системе, а во-вторых, разбиение на очень мелкие группы битов очень негативно сказывается на скорости работы буфера кадра.

Вместо этого можно последовать аналогии с художником, который пишет картину. Он может воспроизвести на картине сколько угодно цветов, смешивая на палитре краски всего из нескольких тюбиков. Будем говорить, что художник имеет потенциально неограниченную палитру цветов, но в каждый момент времени он работает только с некоторыми из них, которые уже смешаны (подготовлены) на палитре.

Возвращаясь к нашей компьютерной модели, покажем, что, выбирая для определенного приложения ограниченный набор цветов из большого множества (нашу палитру), можно в подавляющем большинстве случаев создавать изображение достаточно высокого качества.

Графическое программирование

Код пикселя при этом интерпретируется не как абсолютный код цвета, а как индекс в списке или таблице. Предположим, что каждый пиксель характеризуется кодом из к бит, т.е. имеет значение индекса в диапазоне от 0 до 2*''. Будем также считать, что аппаратные средства отображения позволяют задавать каждый из основных цветов с точностью т бит, т.е. можно получить 2т градаций интенсивности любого из основных цветов. Следовательно, потенциально наш дисплей может воспроизвести любой из 23т цветов, но в буфере кадра можно задать только 2* из них. Эти значения можно "пропустить" через определенную пользователем таблицу соответствия цветов (color-lookup table), которая имеет размер 2кхЗт (рис. 2.26). В прикладной программе заполняется 2* строк таблицы желаемыми кодами цветов, которые представляют собой набор из трех чисел, соответствующих интенсивности первичных компонентов (каждое имеет размер т бит). Создав такую таблицу, пользователь может специфицировать любой из перечисленных в ней цветов его индексом в таблице (рис. 2.27). При к=т=& (это стандартный вариант системы отображения) пользователь имеет в своем распоряжении набор, включающий любые 256 цветов из общего числа 16 М. Таблица из 256 элементов и образует палитру пользователя данного приложения.


⇐ Предыдущая| |Следующая ⇒