5 <- 5 Ф М, 5 <- 5 0 М

Предполагается, что операция Х(Ж применяется к соответствующим битам в блоках 5 и Л/. Если подставить первое соотношение во второе, а второе - в третье, то окажется, что после выполнения третьей операции на экране появится изображение меню. Исходное изображение при этом окажется во вспомогательной памяти, на том месте, где раньше было изображение меню. Таким образом, с помощью операций пересылки битового блока будет выполнен обмен изображениями между буфером кадра и вспомогательной памятью. Этот метод обмена содержимым двух буферов существенно отличается от привычного, который предполагает использование еще одного, промежуточного буфера.

Существует множество вариантов применения такой технологии. Например, она используется при перемещении по экрану изображения курсора, вычерчивании резиновых линий или фигур. Последнюю функцию очень трудно реализовать в АР1, не рассчитанных на специфику растровых дисплеев (см. упр. 9.1 и 9.2).

Операции с пикселями в OpenGL

9.6. Операции с пикселями в OpenGL

Оцифрованное изображение состоит из Л-разрядных пикселей, где к может быть любым числом от 1 (черно-белое изображение без градаций серого) до 32 и даже больше (изображение в формате RGBA с высоким разрешением по цвету). Хотя в принципе черно-белое (одноразрядное - bitmap) изображение отличается от многоградационного (скажем, одно- или двухбайтового) только количественно, оно обрабатывается и программными, и аппаратными средствами совершенно по-другому. Для аппаратной обработки черно-белого изображения требуются только логические операции с одной битовой плоскостью буфера. Как правило, двугра-дационное представление используется для шрифтов, масок и образцов. OpenGL располагает средствами работы как с черно-белым, так и с многоградационным изображением.

Операции с блоками битов имеют смысл при работе с черно-белым изображением, например изображением символов шрифта или курсоров. Значительно менее понятно, как использовать такие операции при работе с многоразрядными пикселями или многоградационным представлением цвета, поскольку далеко не все логические операции из имеющихся 16 типов дают визуально ощутимый эффект. OpenGL поддерживает операции с блоками битов только в режиме индексирования цвета, для чего в составе API имеется функция glLogicOp( ).


⇐ Предыдущая| |Следующая ⇒