Главная » Free Pascal » Управление цветом OpenGL Free Pascal

0

Библиотека OpenGL использует два разных подхода к окраске графических компонент. Первый, наиболее употребительный, основан на четырехкомпонентной цветовой палитре RGBA, в которой представлены интенсивности трех базовых цветов (R — красный, G — зеленый, B — синий) и уровень прозрачности (так на- зываемый альфа-канал). В большинстве графических систем, эксплуатируемых под управлением Windows, для хранения целочисленных значений этих компонентов выделяется по 8 двоичных разрядов (и это соответствует формату TrueColor — бо- гатейшей палитре с более чем 16 млн цветовых оттенков). В библиотеке OpenGL наряду с целочисленным форматом для задания интенсивностей базовых цветов широко используются вещественные значения из диапазона [0, 1]. Нулевое значе- ние соответствует минимальной интенсивности соответствующего компонента цвета, единичное — максимальной. Уровень прозрачности дает возможность рас- смотреть контуры изображений, поверх которых нарисованы новые объекты. Дос- тигается это путем смешения в определенных пропорциях старых красок со вновь накладываемыми. Нулевое значение параметра альфа соответствует абсолютной прозрачности свежего мазка, а единичное значение — абсолютной непрозрачности. Когда речь идет об отображении объекта на экране дисплея, для хранения кода цветности каждого элемента изображения (пиксела) в оперативной памяти или в видеопамяти выделяется 32 бита.

Для установки режима RGB-цветности необходимо указать соответствующий признак в аргументе процедуры glutInitDisplayMode: glutInitDisplayMode(GLUT_RGB or …);

Задание цвета вершины графического примитива обычно устанавливается с помощью процедуры glColor3f или glColor4f:

glColor3f(vR,vG,vB); glColor4f(vR,vG,vB,vA);

Значения всех аргументов должны принадлежать диапазону [0, 1]. В первом случае уровень прозрачности устанавливается равным 1.

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

18 двоичных разрядов. Вместо того чтобы приписывать каждому пикселу 18- битный код настоящей цветности, с ним связывают 8-битный индекс, по которому из отдельно хранящегося массива палитры можно извлечь полный 18-битный код цвета. Именно так была устроена аппаратура устаревших мониторов типа VGA, позволявшая более компактно хранить информацию о цвете изображения.

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии