OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475), страница 62
Текст из файла (страница 62)
5. Если формат хранения — один из компонентных типов (такой как яркость нлз КСВ), пикселы всегда таблично преобразуются по карте «индекс-в-КСВА». Тогда они интерпретируются так же, как если бы были пикселами КСВА и ранее (включая возможное преобразование к яркости). 6. Наконец, результаты предыдущих шагов упаковываются в память согласие режимам 6С РАСК', устанавливаемым РХР1хе15тоге» ().
Чтение и рисование прямоугольных областей 291 о Рис. 8.13. чтение пикселов с помощью 9(аеак)Р!хе!з() Х, )и чи 'о- ее ОРИМЕЧАНИЕ Не исключено, что при выполнении чтения и отображения яркость будет вычислена некорректно. Так, вклад в яркость компонентов и, 6 и В в общем случае неодинаковый, что видно из рис.
8.12 и 8.13. При необходимости вычислить значение яркости согласно числам стандарта ЗО (а), 59 (6) и 11 (В) в процентах вы можете, установив параметр 6с аЕО 5САЕЕ в 0,3, 6с КЕО 81А5 — в 0 и т. д. Тогда величина с будет получена по формуле 0,30й + 0,596 + 0,118. но Значения для масштаба (зса)е), отклонения (Ъ|аз), сдвига (зЪЖ) и смещения (о((зе()— и же, что и для отображения пикселов. Поэтому если вы попеременно читаете а отображаете пикселы, не забывайте настраивать их под чтение и рисование. Ьалогично, предварительно должны быть инициализированы различные карты. 292 Глава 8 ° Вывод пикселов, битовых образов, шрифтов и иэображений Советы по увеличению быстродействия вывода пикселов Как вы могли увидеть, в ОрепСЕ имеется богатый набор возможностей для чтения, рисования пикселов и других манипуляций с ними.
Хотя эти возможности часто очень полезны, они могут также отрицательно повлиять на производительность. Поэтому мы хотим дать несколько рекомендаций с целью предупредить такие явления илн просто для улучшения эффективности: ° Чтобы добиться максимальной скорости, установите все параметры передачи пикселов в значения по умолчанию, а масштабные коэффициенты — в (1.0, 1.0). ° При записи пикселов в буфер кадров к ним применяются операции над фрагментами. (См. раздел «Тесты и операции над фрагментами» главы 10.) Для оптимальной производительности следует отключить эти операции.
° Отключите другие ресурсоемкие действия, такие как текстурирование и освешенне. ° Если вы воспользуетесь совместимым с буфером кадров форматом изображения, вы снимете с ОрепСЕ дополнительную нагрузку. Например, если вы записываете изображения в КСВ-буфер с 8-битовыми компонентами, установите при вызове я10ганР1хе1з О аргумент уогглаГ в значение КСВ и аргумент Гпре — в ОМ516МЕО ВУТЕ. ° В некоторых реализациях ОрепСЕ беззнаковые форматы изображений быстрее знаковых форматов.
я Обычно быстрее рисуется один большой прямоугольник, чем несколько маленьких, поскольку издержки на передачу пикселов сглаживаются на фоне их количества. ° По возможности уменьшайте обьем данных для копирования за счет менее емких типов (например, используйте 6Е ОМ516МЕО ВАХТЕ) и меньшего числа компонентов (например, используйте формат 66 ЕОН1МАМСЕ АЕРНА). ° Операции при передаче пикселов, будь то табличное преобразование, масштабирование, отклонение (Ь(аз), смещение (огТзег) илн сдвиг, со значениями ве по умолчанию, могут снизить производительность.
Расширение 1тац1пц ЯиЬве1 Расширение!ша81п8 ВпЬзес (буквально — подмножество обработки изображений) — это совокупность программ, обеспечивающих дополнительные возможности процесса обработки изображений. С его помощью вы можете: ° использовать таблицы подстановки цветов для замешения значений пикселов; ° использовать свертки для фильтрации изображения; ° использовать матрицу преобразований цвета для преобразования цветового пространства и других линейных преобразований; Расширение 1гпарпд 50Ьзег 293 ° собирать статистику для гистограмм и получать информацию о минимальном в максимальном значениях компонента пвета. 1щай(пй БцЬзег будет вам полезно, если вы хотите иметь больше возможностей, чеи предоставляют операции В1Рт хе1т гад зте г» () и В1Рт хе1Иар» () .
Поскольку (тай(пя БцЬзег является расширением, то для того, чтобы убедиться в его присутствии в своей реализации, нужно посмотреть на значение параметра 51 АкВ тиадтпВ. Если эта константа определена, вам доступны все новые возвожности. Больше информации вы найдете в подразделе «Расширения стандарта» главы 14. функции подмножества доступны всякий раз, когда Ореол читает или передает пикселы. К числу операций, на которые воздействуют функции 1тая(пй ЯцЬзец относятся: ° отображение и чтение пиксельных прямоугольников: В1йеаертхе1з(), к10гаи- Р! хе1в О, а1СоруР1хе1з О; ° задание текстур: В1Тех1иаае10О, а1Тех1иаде20О, к1Сорутех1иаае*о О, е15цЬТех1щаде10О, В15цЬТех1иаде2П() и В1Сору5цЬТех1иаде»0().
Рисунок 8.14 иллюстрирует операции, выполняемые 1шай(пй БцЬзес над пикселави, обрабатываемыми ОрепС1. Практически любые возможности расширения когут быть отключены или включены, кроме матрицы преобразования цветов, доступной всегда. Входной поток кпупакоаанн пикс одной оток салоп Рис. 6.14. Операции расширения 1пъзд!пд ВцЬвее 294 Глава В ° Вывод пикселов, битовых образов, шрифтов и изображений Таблицы цветов Таблица 8.7. Использование таблиц цветов в конвейерной обработке изображений Операции над пикселами Параметр таблицы цветов Место, где пикселы попадают в конвейер После свертки После преобразования матрицей цвета 61 СОСОЙ ТАВСЕ БС Р05Т СОМЧОС0110М СОСОР ТАВСЕ 60 Р05Т СОСОЙ МАТй1Х СО(Ой ТАВСЕ Функция 81ЕпаЬ)е() делает доступной каждую из перечисленных зз табл. 8 7 таблиц цветов, принимая значения из левого столбца в виде аргумента.
Задание таблиц цветов Таблицы цветов задаются подобно одномерным изображениям. Как показано нз рис. 8.14, есть три таблицы, доступные для модификации пиксслов. Для указания на конкретную таблицу используется операция 81СЬ1огТаЬ(е (). УЬЫ 8\Со1огтаЬ(е(О).епцв сагбей 01епшп (пгегпа!го пай С).яяе( со!с(г)з.
С1еппв )оггпай С).еппв игре, сова( С).уоЫ 'с(ага); Задает указанную таблицу цветов, в зависимости от того, чему равен аргумент Гагяес — БС СОСОР ТАВСЕ, БС Р05Т СОМН010110М СОСОЙ ТАПСЕ или БС Р05Т СОСОР МАТР1Х СОСОР ТАВСЕ. Еслисазцесустановлен вБС РРОХУ СО(Ой ТАВСЕ, БС РРОХУ Р05Т СОМНОСОТ10М СОСОР ТАВСЕ или БС РЙОХУ Р05Т СО(ОР МАТЙ1Х СОСОР ТАВСЕ, команда 81СЬ1огТаЬ1е() проверяет, можно ли отнести указанную таблицу к доступным ресурсам или нет.
Аргумент !пгетиа!Гоггпаг определяет представление Орепб(., в котором хра- нятся данные (стаса). Это одно из следующих символических имен: 61 АСРНА, БС АСРНА4,61 АСРНАВ, БС АСРНА12,61 АСРНА16, 61 10М1МАЙСЕ, БС 00М1ЙАЙСЕ4, БС СОМ1МАМСЕВ,БС СОМ1ЙАМСЕ12,61 СОМ1МАМСЕ16,61 СОН1МАМСЕ АСРНА,БС СОМ1МАМСЕ4 АСРНА4, БС СОН1МАМСЕБ АСРНА2, БС 10М1ЙАМСЕВ АСРНАВ, Бс СОМТЙАЙСЕ12 АСРНА4, БС 10М1МАМСЕ12 АСРНА12, 61 СОМ1ЙАМСЕ16 АСРНА16, 61 1МТЕМ51ТУ, БС 1МТЕМ51ТУ4, БС 1МТЕЙ51ТУВ, 61 1ЙТЕМ51ТУ12, БС 1МТЕМ- 51ТУ16, БС Р68, БС РЗ 65 82, БС 8684, БС Р685, 61 Р688, БС Й6810, 61 Р6812, 61 Р6816, БС РБВА, БС РБВА2, БС РБВА4, 61 8685 А1, БС РБВАВ, 61 РБВ10 А2, 61 РБВА12 и 61 РБВА16. Аргумент спас)з должен быть степенью 2, указьвает количество пикселов в таблице цветов. Аргументы )огтпаг и гуре описывают формат и тип данных в таблице цветов. Их значения эквиваленты соответствующим парамстраи 810гаирт хе1з ().
Таблицы цветов — это таблицы подстановки, предназначенные для замещения цвета пикселов. В приложениях таблицы цветов могут быть использованы для изменения контраста, фильтрации и исправления (ес)паззхас(оп) изображений. Доступны три различные таблицы подстановки, работающие на разных атапах конвейерной обработки. В табл. 8.7 показано, в каком месте конвейера может быть применена соответствующая таблица.
Расширение 1(пай!пй 5иЬзег 295 Внутренний формат таблицы отвечает за то, какие компоненты будут замешены. Например, если выбран формат 66 КОВ, это будут красный, зеленый и синий компоненты. Таблица 8.8 описывает соответствие мех(ау замещаемыми компо- нентами и внутренними форматами. Таблица 8.8.
Замещение пикселов по таблице цветов Зеленый компонент Синий компонент Нрасный компонент Основной внутренний формат Альфа- компонент :т Не изменяется Не изменяется Не изменяется А, Не изменяется 1г В, в, А, Не изменяется А, Здесь обозначение [., представляет элементы яркости, оно имеет отношение только к красному, зеленому и синему компонентам. Обозначение 1, соответствует элементам интенсивности, то есть тем жс НОВ-компонентам плюс альфа-компоненту. После применения таблицы цветов к изображению можно масштабировать или отклонить ()у[аз) его пикселы, а далее их значения преобразуются к диапазону '[ОГЦ, Факторы 66 СОЬОК ТАВЕЕ 5САЕЕ и бь СОСОК ТАВЬЕ В1А5 устанавливаютсядля каждой таблицы командой В1СЬ1огтаЬ(ерагамесег*().