Если параметр GL_MAP_COLOR равен true, то каждая компонента масштабируется на размер соответствующей таблицы преобразования, затем заменяется элементом таблицы по индексу масштабированной компоненты. Так, красная компонента масштабируется на размер таблицы GL_PIXEL_MAP_R_TO_R_SIZE, а затем заменяется элементом таблицы GL_PlXEL_MAP_R_TO_R по индексу. Все значения компонент, взятые из таблиц, приводятся к диапазону [0,1].

Пиксель представлен индексом цвета.

Каждый индекс цвета сдвигается влево на GL_INDEX_SHIFT битов, заполняя нулями биты, определяющие дробную часть числа. Если GL_INDEX_SHIFT отрицателен, то сдвиг происходит вправо. Затем к индексу добавляется GL_INDEX_OFFSET.

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

Если GL_MAP_COLOR равен true, то каждый индекс маскируется числом 2п-1, где n - GL_PIXEL_MAP_l_TO_l_SIZE. Затем индекс цвета заменяется элементом из таблицы GL_PIXEL_MAP_l_TO_l по индексу, полученному после маскирования.

Если результирующие пиксели должны быть записаны в буфер цвета или если они читаются обратно в клиентскую память в формате, отличном от GL_COLOR_lNDEX, то пиксели конвертируются из индексов цвета с использованием четырех таблиц: GL_PIXEL_MAPJ_TO_R, GL_PIXEL_MAP_l_TO_G, GL_PIXEL_MAP_l_TO_B и GL_PIXEL_MAP_I_T 0_А.

Перед индексацией индекс маскируется числом 2*п-1, где п:

GL_PIXEL_MAP_l_TO_R_SIZE для красной карты,

GL_PIXEL_MAP_l_TO_G_SIZE для зеленой карты,

GL_PIXEL_MAP_l_TO_B_SIZE для синей карты,

GL_PIXEL_MAP_l_TO_A_SIZE для карты альфа-канала.

Значения элементов таблицы приводятся к диапазону [0,1].

Пиксель представлен значением глубины.

Каждое значение глубины умножается на GL_DEPTH_SCALE, добавляется к GL_DEPTH_BIAS, затем результат приводится к диапазону [0,1].

Пиксель представлен трафаретным индексом.

Каждый индекс сдвигается на GL_INDEX_SHIFT бит так же, как индекс цвета, и добавляется к GL_INDEX_OFFSET

Если GL_MAP_STENCIL равен true, то каждый индекс маскируется числом 2п-1, где n - GL_PIXEL_MAP_S_TO_S_SIZE, затем заменяется элементом таблицы GL_PIXEL_MAP_S_TO_S по индексу, полученному после маскирования.

Содержимое таблиц определяется функцией gIPixelMap. Если функции gIDrawPixels, gIReadPixels, glCopyPixels, gITexImage помещаются в список отображения, то установки режима перемещения влияют, когда список отображения выполняется. Установки могут отличаться от установок при компиляции списка.

Смотри также:

glCopyPixels, gIDrawPixels, gIPixelMap, gIReadPixels, gITexImage.

gIPixelZoom

Определяет коэффициенты масштабирования пикселей.

void gIPixelZoom (

GLfloat xfactor,

GLfloat yfactor ) ; Подробнее о параметрах, xfactor, yfactor

Коэффициенты масштабирования для x и у координат при пиксельных операциях.

Значение коэффициентов не ограничено положительными числами. Отрицательный коэффициент отражает результирующее изображение относительно текущей растровой позиции. Текущие значения коэффициентов масштабирования пикселей можно получить, вызвав функцию gIGet с параметром GL_ZOOM_X или GL_ZOOM_Y.


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