Bit blit

редактировать

Bit blit (также записывается BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt и т. Д., Что означает передачу блока битов) - это операция с данными, обычно используемая в компьютерной графике, в которой несколько растровых изображений объединяются в одно с помощью логической функции .

Операция включает как минимум два растровых изображения, один источник и место назначения, возможно, третье, которое часто называют «маской», а иногда и четвертое используется для создания шаблона . Пиксели каждого объединяются поразрядно в соответствии с указанной растровой операцией (ROP), и результат затем записывается в место назначения. ROP - это, по сути, логическая формула. Самый очевидный ROP перезаписывает место назначения источником. Другие ROP могут включать операции И, OR, XOR и НЕ. Графический чипсет Commodore Amiga (и другие) мог комбинировать три исходных растровых изображения, используя любую из 256 возможных логических функций с тремя входами.

Современное графическое программное обеспечение почти полностью заменило побитовые операции более общими математическими операциями, используемыми для эффектов, таких как альфа-композитинг. Это связано с тем, что побитовые операции с цветными дисплеями обычно не дают результатов, напоминающих физическую комбинацию источников света или чернил. Некоторое программное обеспечение по-прежнему использует XOR для рисования интерактивных прямоугольников выделения или границ области; когда это делается для цветных изображений, легко увидеть необычные получающиеся цвета.

Содержание

  • 1 Происхождение
  • 2 Пример реализации маскированного блит-кода
    • 2.1 Метод
  • 3 Блиттинг против аппаратных спрайтов
  • 4 Ссылки
  • 5 Внешние ссылки

Истоки

Название происходит от подпрограммы BitBLT для Xerox Alto компьютера, что означает передачу блока с границей битов. Дэн Ингаллс, Ларри Теслер, Боб Спроул и Дайана Мерри запрограммировали эту операцию в Xerox PARC в ноябре. 1975 г. для системы Smalltalk-72. Дэн Ингаллс позже реализовал переработанную версию в микрокоде.

. Разработка быстрых методов для различных операций битового преобразования дала толчок эволюции компьютерных дисплеев от использования символьной графики к используя растровую графику для всего. Машины, которые в значительной степени зависят от производительности 2D-графики (например, игровых консолей ), часто имеют специальные схемы, называемые блиттером.

Пример реализации маскированного блиттера

Классическое использование блиттинга - рендеринг прозрачных спрайтов на фоне. В этом примере используются фоновое изображение, спрайт и 1-битная маска. Поскольку маска 1-битная, нет возможности частичной прозрачности через альфа-смешение.

Цикл, который проверяет каждый бит в маске и копирует пиксель из спрайта, только если маска установлен будет намного медленнее, чем оборудование, которое может применять точно такую ​​же операцию к каждому пикселю. Вместо этого маскированный блит может быть реализован с помощью двух обычных операций BitBlit с использованием растровых операций И ​​и ИЛИ.

Фоновое изображениеСпрайт (слева) и маска (справа)
Blit back.png XBlit dot.png

Спрайт рисуется в различных положениях поверх изображения, чтобы получить следующее:

Предполагаемый результат
XBlit final.png

Техника

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

В первом блит-коде маска переносится на фон с помощью растрового оператора AND. Поскольку любое значение AND с 0 равняется 0, а любое значение AND с 1 не изменяется, черные области создаются там, где будут появляться фактические спрайты, а остальная часть фона остается в покое.

Результат первого blit
XBlit and.png

Во втором blit спрайт переносится на недавно измененный фон с использованием растрового оператора OR. Поскольку любое значение, объединенное с помощью логической операции ИЛИ 0, не изменяется, фон не изменяется, а черные области заполняются фактическим изображением спрайта.

Конечный результат
XBlit final.png

Также можно достичь того же эффекта, используя спрайт с белым фоном и маской белое на черном. В этом случае сначала будет выполнено ИЛИ маска, а затем И спрайт.

Блиттинг против аппаратных спрайтов

Блиттинг похож на аппаратный спрайт рисование, поскольку обе системы воспроизводят узор, обычно квадратную область, в разных местах на экране. Аппаратные спрайты имеют то преимущество, что они хранятся в отдельной памяти и, следовательно, не нарушают работу основной памяти дисплея. Это позволяет перемещать их по дисплею, закрывая «фон», не влияя на него.

Блиттинг перемещает те же типы рисунков по экрану, но делает это путем записи в ту же память, что и остальная часть дисплея. Это означает, что каждый раз, когда рисунок помещается на экран, отображение «под» ним перезаписывается или «повреждается». Программное обеспечение должно очистить это повреждение путем двойного копирования, один раз для удаления повреждения, а затем еще раз для того, чтобы установить бит на новое место. Однако есть несколько способов оптимизировать это. Если рисунки занимают большие области экрана, может быть более эффективным применить мигание фона к экрану, а не стирать каждый рисунок по отдельности. Вариант включает разделение экрана на сегменты и стирание только тех сегментов, на которых были нарисованы узоры. Этот прием известен как грязные прямоугольники.

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-12 08:25:16
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте