stringtranslate.com

Бит-блит

Битовый блайт (также пишется BITBLT , BIT BLT , BitBLT , Bit BLT , Bit Blt и т. д., что означает передачу битовых блоков ) — операция над данными, обычно используемая в компьютерной графике , при которой несколько растровых изображений объединяются в одно с помощью булевой функции . [1]

Операция включает в себя по крайней мере два битовых массива: «источник» (или «передний план») и «адресат» (или «фон»), и, возможно, третий, который часто называют « маской ». Результат может быть записан в четвертый битовый массив, хотя часто он заменяет адрес назначения. Пикселы каждого из них объединяются с помощью программно-выбираемой растровой операции , побитовой булевой формулы. Наиболее очевидная растровая операция перезаписывает адрес назначения источником. Другие могут включать операции AND , OR , XOR и NOT . [1] Графический чипсет Commodore Amiga (и другие) мог объединять три исходных битовых массива, используя любую из 256 возможных 3-входовых булевых функций .

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

Происхождение

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

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

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

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

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

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

Техника

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

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

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

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

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

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

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

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

Смотрите также

Ссылки

  1. ^ ab Sanchez, Julio; Maria P. Canton (2007). "Отображение растровых изображений". Программные решения для инженеров и ученых . CRC Press. стр. 690.
  2. ^ "Framebuffer - OpenGL Wiki". www.khronos.org . Получено 23 июня 2020 г. Операция blit — это особая форма операции копирования; она копирует прямоугольную область пикселей из одного буфера кадра в другой. Эта функция также имеет некоторые весьма специфические свойства в отношении мультисэмплинга.

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