Interested Article - Блиттер
- 2020-08-06
- 1
Блиттер ( англ. Blitter ) — первоначально микросхема или часть графического сопроцессора, осуществляющая быстрое копирование и наложения фрагментов изображений в памяти (данный процесс называется ), благодаря чему освобождаются ресурсы центрального процессора и ускоряется работа с графикой. Название происходит от акронима BLIT ( англ. BLock Image Transfer ). Основное применение блиттер находил в работе с 2D-графикой и связанных с ней преобразованиях.
Необходимость в блиттере
Первоначально при обработке растровых изображений использовались участки основной памяти, которые обрабатывались ЦПУ . Работа с графикой (поддержка спрайтов , заливка области цветом,) могла требовать много ресурсов.
С совершенствованием графического оборудования ( кадровый буфер ) стали поддерживаться более высокие разрешения и глубина цвета . Для игр, использовавших графические функции в полном объёме, при обычном подходе потребовались бы большие скорости при многократных пересылках данных в памяти. Подобная работа занимает много ресурсов у ЦПУ, отнимая у него время на работу с другими задачами.
Блиттинг является не единственным решением для высокопроизводительной обработки графики. Более распространённым решением было использование технологии спрайтов . Небольшие изображения (спрайты) располагались поверх фонового изображения независимо от него. Как правило, видеочип при выводе на дисплей очередной горизонтальной строки пикселей ( ) экрана анализировал, какие спрайты на неё попали и для каждого выводимого пикселя заднего фона проверял, не перекрывается ли он пикселями спрайтов, подменяя цвет при необходимости. Это устраняло необходимость массивного копирования памяти процессором, но требовало от видеочипа частого доступа к памяти спрайтов, которая нередко поэтому выделялась в отдельный банк физической памяти.
Недостатком такого подхода было то, что логика обработки спрайтов была жёстко задана в микросхеме, и число одновременно обрабатываемых изображений было ограничено — от двух ( Atari 2600 ) до восьми ( Commodore 64 ) спрайтов, а такая игровая консоль как Famicom / NES могла выводить до 64 спрайтов на экране, но не более 8 спрайтов в одной строке, при большем их числе они как правило начинали характерно «перемигиваться», отключаясь и включаясь в разном порядке.
В технологии блиттера количество объектов ограничено только производительностью самого устройства и объёмом используемой им памяти. С ростом производительности компьютеров это преимущество перечеркнуло плюсы использования спрайтов, и в конце концов системы обработки спрайтов трансформировались в блиттеры. Тем не менее, почти все компьютеры с появлением манипуляторов типа « мышь » умеют выводить как минимум один аппаратный спрайт — собственно курсор мыши.
Появление блиттера в компьютерах
Дабы решить проблему, разработчики компьютеров создали специальное устройство. При обработке графики ЦПУ посылало описание требуемой операции блиттеру, который параллельно обрабатывал большинство операций с 2D-графикой и тем самым ускорял работу приложений.
Впервые устройства, похожие на работу блиттера, появились в игровых консолях Bally Astrocade , славившихся богатыми для того времени возможностями обработки графики. В консоли был выделен участок памяти до адреса 0x4000, при попытке записи в который вызывался графический чип.
Устройство, полностью реализующее функции блиттера, впервые появились в компьютерах Commodore Amiga , на которое компания Commodore получила патент US 4874164. В этом патенте было введено понятие «блиттер» как «устройство персонального компьютера для блочного копирования данных растровых изображений» ( англ. Personal computer apparatus for block transfer of bit-mapped image data ).
Блиттеры в современных компьютерах
Все современные графические процессоры обладают функциями, присущими возможностям блиттера, однако доступ к ним скрыт и не рекомендуется, особенно при работе с трёхмерной графикой.
Современные API ( Direct3D и OpenGL ) заставляют описывать весь кадр, а затем отрисовывать его с нуля. Перемещение данных непосредственно в кадровом буфере менее эффективно и может рассматриваться как плохой подход в программировании. Современные устройства уже обладают набором функций для обработки изображений (вращение, изменение масштаба и прозрачности), которые легко доступны через API. Использование текстур при отрисовке полигонов делают блиттеры устаревшими. Однако данная технология нашла своё применение в современных графических подсистемах с низким энергопотреблением.
Примечания
- Патент США № 4 874 164. . на сайте Ведомства по патентам и товарным знакам США .
- 2020-08-06
- 1