В режиме RGB задаются значения красного, зеленого и синего цветовых компонентов. Как отмечалось в разделе 2.9, четвертый цветовой параметр, коэффициент альфа, необязателен, а четырехмерное описание цвета называется RGBA-цветом. Этот четвертый цветовой параметр можно использовать для смешивания цветов при наложении объектов друг на друга. Одна из важных областей применения параметра смешивания цветов - это моделирование эффектов прозрачности. Для таких расчетов значение альфа соответствует настройке прозрачности (или непрозрачности). В режиме RGB (или RGBA) текущие цветовые компоненты выбираются с помощью функции

glColor* (colorComponents); Индексы аналогичны используемым для функции glVertex. Для выбора режима RGB или RGBA используются индексы 3 или 4 плюс код типа числовых данных и необязательный индекс, обозначающий вектор. Возможны такие индексы, обозначающие тип числовых данных: b (byte), i (integer), s (short), f (float) и d (double), а также числовые значения без знака. Значения цветовых компонентов с плавающей запятой принадлежат диапазону от 0,0 до 1,0, по умолчанию цветовые компоненты для оператора glColor, включая значение альфа,-это (1.0, 1.0,1.0,1.0), задающие белый цвет RGB и значения альфа, - 1,0. Например, в следующем операторе используются значения с плавающей запятой в режиме RGB, с помощью которых текущий цвет примитивов задается голубым (комбинация максимально интенсивных зеленого и синего).

glColor3f (0.0, 1.0, 1.0); С помощью массива, описывающего три цветовых компонента, цвет в вышеприведенном примере можно задать так.

glColor3fv (colorArray); В пакете OpenGL цвета можно выбирать и для отдельных точек, используя для этого пару glBegin/glEnd.

Описание цветовых компонентов с помощью целых чисел зависит от возможностей системы. Для полноцветной системы, в которой выделяется 8 бит на пиксель (256 уровней для каждого цветового компонента), целочисленные значения цветовых компонентов принадлежат диапазону от 0 до 255. Тогда соответствующие значения цветовых компонентов с плавающей запятой будут 0,0; 1,0/255,0; 2,0/255,0; …; 255,0/255,0 = 1,0. Для полноцветной системы голубой цвет в предыдущем примере можно задать с помощью целочисленных значений цветовых компонентов так.

glColor3i (0, 255, 255); В действительности в позициях буфера кадра хранятся целочисленные значения, поэтому при описании цветовых значений с помощью целых чисел можно избежать преобразований, необходимых тогда, когда задаются значения с плавающей запятой. Заданные в любом формате цветовые значения превращаются в целочисленные, которые принадлежат диапазону, определенному количеством битов, доступным определенной системе.

ИНДЕКСНЫЙ ЦВЕТОВОЙ РЕЖИМ В OpenGL

Описание цвета в OpenGL может также задаваться в индексном цветовом режиме, в котором даются ссылки на значения элементов цветовой таблицы. В этом режиме текущий цвет устанавливается путем задания индекса цветовой таблицы:

gllndex* (colorlndex); Параметру colorlndex присваивается неотрицательное целое значение. Затем это значение индекса записывается в позиции буфера кадра для последовательно описываемых примитивов. Цветовой индекс можно задавать с любым из следующих типов данных: байтовый без знака, целый или с плавающей запятой. Тип данных параметра colorlndex обозначается с помощью индекса ub, s, i, d или f, а количество индексов цветовой таблицы всегда равно какому-либо числу в степени 2, например, 256 или 1024. Количество битов, приходящееся на каждую позицию таблицы, зависит от аппаратных особенностей системы. В качестве примера описания цвета в индексном цветовом режиме приведем следующий оператор, с помощью которого задается текущий цветовой индекс со значением 196.


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