Для того чтобы повернуть изображение, предлагалось загрузить его в текстурную память, наложить как текстуру на прямоугольник и затем поворачивать прямоугольник. Эти операции требуют обращения к текстурному модулю, но все равно скорость работы на современном оборудовании для большинства приложений является приемлемой. На языке шейдеров OpenGL даже можно задавать одни и те же координаты прямоугольника при рисовании изображения, чтобы вершинный шейдер выполнял масштабирование, преобразование, поворот прямоугольника. Деформировать изображение можно, накладывая его на многоугольник сложной формы вместо простого прямоугольника. Аппаратная поддержка этих операций позволяет получать высококачественные результаты.
6.2. Математические отображения Самые общие операции обработки изображения, поддерживаемые стандартным OpenGL, - это масштабирование и смещение. При этом каждый компонент цвета умножается на коэффициент масштабирования, а значение смещения к нему прибавляется. С помощью этих операций можно отображать значения цвета с одной линейной последовательности на другую, а делается все это стандартными арифметическими операциями. Также можно выполнять более сложные математические отображения пиксельных значений встроенными функциями pow, ехр2, 1од2.
Встроенная функция dot может возвращать значение интенсивности, используя значение цвета. Чтобы вычислить значение яркости по цветовой системе Международной комиссии по освещению (МКО, или CIE) на основе обычных RGB-значений, определенных в соответствии с цветовым стандартом телевидения повышенной четкости (HDTV), можно сделать так:
float luminance = dot(vec3 (0.2125. 0.7154, 0.0721). rgbColor);
HDTV - это стандарт для современных промышленных мониторов, который определяет линейное цветовое пространство RGB. Коэффициенты 0,299, 0,587, 0,114 часто используются для преобразования значений RGB в значения яркости. Эти значения были установлены Национальным комитетом по телевизионным системам США (НТСЦ, NTSC) в 1953 г., чтобы вычислять яркость для мониторов и преобразовывать нелинейные значения RGB в значения яркости. Для современных мониторов эти значения вычисляют яркость не совсем точно, но вполне подходят для вычисления нелинейных значений яркости из нелинейных значений RGB: