1.8.2. Перемещение пикселов После распаковки пикселов пиксельные прямоугольники подвергаются серии операций, называемых перемещением пикселов (см. рис. 1.1, 13). Эти операции применяются в разных направлениях: как при передаче данных из приложения в OpenGL (glDrawPixel s, glTexlmage, glïexSublmage), так и при копировании данных внутри OpenGL (gl CopyPixels, glCopyTexImage, g] CopyTexSub Image) или передаче данных обратно в приложение (glReadPixels).
Перемещение пикселов можно настраивать функцией gl Pi xel Trans fer. При этом устанавливаются параметры, определяющие, каким образом значения красного, зеленого, синего цветов, прозрачности и глубины будут масштабированы и сдвинуты, Также применяется специальная таблица преобразования для отображения одних параметров на другие (цвета или шаблона). Таблица преобразования задается командой gl Pi xel Нар.
Некоторые дополнительные операции, проводимые на этом этапе, являются необязательной частью формирования изображения. Производители графических ускорителей, считающие эти операции важными, по желанию могут включать набор дополнительных операций над изображением (imaging subset) в собственные реализации OpenGL, но другие производители могут и не поддерживать эти операции. Приложение может определить доступность дополнительной операции с помощью функцииglGetString, передавая ей параметр Gl_EXT£NSIONS. Функция вернет список расширений, поддерживаемых данной реализацией. Приложение должно проверить вхождение подстроки «ARB_i magi ng» в возвращенную функцией строку.
В набор дополнительных операций перемещения пикселов входят искривление, матрица линейного преобразования, гистограмма, вычисление минимума и максимума, дополнительные таблицы преобразования цвета. Все это может быть использовано для более полной обработки изображений и операций корректирования цвета.
1.8.3. Растеризация и окончательная обработка После перемещения пикселов фрагменты проходят растеризацию пиксельных прямоугольников примерно таким же способом, как они были сгенерированы из ЗБ-примитивов (см. рис. 1.1, 14). На этом этапе определяется, как изображение будет размещено в буфере кадров. Растеризация учитывает текущее положение растра (которое можно установить функциями glRasterPos или glWindowPos)