Блиттер

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Блиттер (англ. Blitter) — первоначально микросхема или часть графического сопроцессора, осуществляющая быстрое копирование и наложения фрагментов изображений в памяти (данный процесс называется бит-блит), благодаря чему освобождаются ресурсы центрального процессора и ускоряется работа с графикой. Название происходит от акронима BLIT (англ. BLock Image Transfer). Основное применение блиттер находил в работе с 2D-графикой и связанных с ней преобразованиях.

Необходимость в блиттере[править | править вики-текст]

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

С совершенствованием графического оборудования (кадровый буфер) стали поддерживаться более высокие разрешения и глубина цвета. Для игр, использовавших графические функции в полном объеме, при обычном подходе потребовались бы большие скорости при многократных пересылках данных в памяти. Подобная работа занимает много ресурсов у ЦПУ, отнимая у него время на работу с другими задачами.

Блиттинг является не единственным решением для высокопроизводительной обработки графики. Более распространенным решением было использование технологии спрайтов. Небольшие изображения (спрайты) располагались поверх фонового изображения независимо от него. При срабатывании таймера они перемещались, создавая иллюзию движения. Аппаратное обеспечение отрисовывало спрайты по срабатыванию таймера с достаточно низкими потерями производительности и позволяло отказаться от пересылки данных в памяти.

Недостатком такого подхода было то, что логика обработки спрайтов была жестко задана в микросхеме, и число одновременно обрабатываемых изображений было ограничено — от двух (Atari VCS) до восьми (Commodore 64).

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

Появление блиттера в компьютерах[править | править вики-текст]

Дабы решить проблему, разработчики компьютеров создали специальное устройство. При обработке графики ЦПУ посылало описание требуемой бит-блит операции блиттеру, который параллельно обрабатывал большинство операций с 2D-графикой, и тем самым ускорял работу приложений.

Впервые устройства, похожие на работу блиттера, появились в игровых консолях Bally Astrocade, славившихся богатыми для того времени возможностями обработки графики. В консоли был выделен участок памяти до адреса 0x4000, при попытке записи в который вызывался графический чип.

Устройство, полностью реализующее функции блиттера, впервые появились в компьютерах Commodore Amiga, которая получила на него патент US 4874164.[1] В этом патенте было введено понятие «блиттер» как «устройство персонального компьютера для блочного копирования данных растровых изображений» (англ. Personal computer apparatus for block transfer of bit-mapped image data).

Блиттеры в современных компьютерах[править | править вики-текст]

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

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

Примечания[править | править вики-текст]