Если параметр 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.