Jump to content

Постепенно

(Перенаправлено с Bitblt )

Битовый блит (также пишется 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, используя растровые операции И и ИЛИ.

Фоновое изображение Спрайт (слева) и маска (справа)

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

Ожидаемый результат

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

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

Результат первого блита

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

Окончательный результат

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

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

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

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

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

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

См. также

[ редактировать ]
  1. ^ Jump up to: Перейти обратно: а б Санчес, Хулио; Мария П. Кантон (2007). «Отображение растровых изображений» . Программные решения для инженеров и ученых . ЦРК Пресс. п. 690.
  2. ^ «Фреймбуфер — OpenGL Wiki» . www.khronos.org . Проверено 23 июня 2020 г. Операция блитирования — это особая форма операции копирования; он копирует прямоугольную область пикселей из одного фреймбуфера в другой. Эта функция также имеет некоторые очень специфические свойства в отношении мультисэмплинга.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6604f99b45a8952147ca58e7dd23c33d__1704994080
URL1:https://arc.ask3.ru/arc/aa/66/3d/6604f99b45a8952147ca58e7dd23c33d.html
Заголовок, (Title) документа по адресу, URL1:
Bit blit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)