Принципы вывода изображений




Содержание

Введение

Принципы вывода изображений

Графический режим

Текстовый режим

Трехмерная графика

Графический конвейер

Рендеринг

Реализация трехмерной графики

Обработка видеоизображений

Стандарты MPEG

Введение

 

Персональный компьютер смог стать привлекательным вычислительным сред­ством благодаря интерактивности взаимодействия с пользователем. Интерактив­ность подразумевает наличие устройств оперативного ввода и вывода информации. Основной поток выходной информации — визуальный, причем информа­ция представляется как в текстовом, так и в графическом виде. Визуальная ин­формация может выводиться на экран, возможно получение и ее «твердой ко­пии» (Hard Copy) — на бумаге, пленке и т. п. Для интерактивного режима вывод на бумагу малоинтересен, хотя в далекой истории компьютеров интерактивный режим впервые был реализован именно на телетайпе (грубо говоря, электричес­кой пишущей машинке, подключенной к компьютеру). Данный реферат посвящен активным средствам вывода визуальной информации — видеосистеме PC. Ак­тивность подразумевает возможность изменения изображения без смены носи­теля.

В первые годы существования PC его видеосистемой называли средства вы­вода текстовой или графической информации на какой-либо экран, В качестве оконечного устройства чаще всего использовали (и продолжают использовать) мониторы с электронно-лучевыми трубками. Адаптеры, позволяющие подклю­чать монитор к шине компьютера, называли видеоадаптерами и подразделяли на алфавитно-цифровые и графические. Последние, естественно, кроме графичес­кой, позволяли выводить и текстовую информацию. Вся выводимая информа­ция формировалась в результате действия и под управлением системных и при­кладных программ.

По мере «взросления», на PC стали взваливать и казавшуюся ранее неподъ­емной ношу воспроизведения и обработки движущихся телевизионных изобра­жений — так называемого «живого видео». Так назрела необходимость коррек­тировки терминологии. Видеосистема современного компьютера состоит из обя­зательной графической (формирующей изображение программно) и дополнитель­ной подсистемы обработки видеоизображений. Обе эти составляющие части обыч­но используют общий монитор, а соответствующие аппаратные средства систем­ного блока могут располагаться на раздельных картах различного функциональ­ного назначения или объединяться на одном комбинированном адаптере, кото­рый можно назвать адаптером дисплея (Display Adapter).

Графический адаптер служит для программного формирования графических и текстовых изображений и является промежуточным элементом между мони­тором и шиной компьютера. Изображение строится по программе, исполняемой центральным процессором, в чем ему могут помогать графические акселерато­ры и сопроцессоры. В BIOS имеется поддержка функций формирования тексто­вых и, графических изображений, по старинке называемая видеосервисом (BIOS Int lOh). Существует ряд классов адаптеров (MDA, CGA, EGA, VGA, SVGA...), которые будут рассмотрены ниже. В монитор адаптер посылает сигналы управ­ления яркостью лучей RGB (Red, Green, Blue — красный, зеленый и синий — базисные цвета) и синхросигналы строчной и кадровой разверток. Кроме этих сигналов, относящихся только к формированию изображения, интерфейс с мо­нитором может содержать и сигналы обмена конфигурационной информацией между монитором и компьютером. Так, например, PnP-мониторы при наличии соответствующей поддержки адаптером способны сообщать системе свои пара­метры (модель и параметры синхронизации).

Средства работы с видеоизображениями, передаваемыми в стандартах PAL, SECAM или NTSC, относятся уже к мультимедийному оборудованию. От про­граммно-управляемых графических средств они отличаются тем, что оперируют с «живым» изображением, поступающим в компьютер извне (с видеокамеры, TV-тюнера) или воспроизводимым с какого-либо носителя информации (например, CD-ROM или DVD).

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

Стандартизацией в области видеосистем занимается международная органи­зация VESA (Video Electronic Standard Association — ассоциация по стандартиза­ции в области видеоэлектроники, доступная по адресу https://www.vesa.org). Бла­годаря ее усилиям обеспечивается совместимость как на уровне аппаратных средств, так и на уровне программного обеспечения.

С самого начала появления персонального компьютера его видеосистему стре­мились строить для максимального приближения к идеалу WYSIWYG (What You See Is What You Get) — что видишь, то и имеешь, или наоборот. Поскольку под словом «имеешь» чаще всего подразумевается некоторая отпечатанная продук­ция, то имеется и идеал WYSIWYP (What You See Is What You Print) — что видишь на мониторе, то и будет напечатано. Стремление к этим идеалам, подкреп­ленное техническим прогрессом, приводит к неуклонному росту качественных показателей видеосистемы и проникновению компьютерных технологий в такие области, как, например, хранение точных (!) копий произведений искусства в электронном виде.

 

Принципы вывода изображений

 

Видеосистема PC ориентирована на растровый метод вывода изображения. Рас­тровый метод подразумевает, что некий рисующий инструмент, способный ос­тавлять видимый след, сканирует всю поверхность, на которую выводится изоб­ражение. Траектория движения инструмента постоянна и не зависит от выводи­мого изображения, но инструмент может рисовать, а может и не рисовать от­дельные точки траектории. Видимым изображением являются оставленные им точки. В случае видеомонитора инструментом является модулированный луч (или три луча базисных цветов), построчно сканирующий экран и вызывающий све­чение люминофора, нанесенного на внутреннюю поверхность экрана. Каждая строка растра разбивается на некоторое количество точек — пикселов (Pixel — сокращение от Picture Element — элемент изображения), засветкой каждой из которых по отдельности может управлять устройство, формирующее изображе­ние (например, графическая карта). Видеомонитор является растровым устрой­ством вывода динамически изменяемых изображений. Его луч сканирует экран с частотой, которая не должна позволять глазу видеть мерцание изображения. Матричные дисплеи, применяемые в блокнотных ПК, также относятся к растро­вым устройствам. Растровыми устройствами вывода статических изображений являются принтеры, в которых сканирование листа производится однократно (хотя возможны и многократные проходы).

Альтернатива растровым устройствам — векторные устройства вывода изоб­ражений. В этих устройствах инструмент прорисовывает только изображаемые фигуры и его траектория движения определяется выводимым изображением. Изоб­ражение состоит из графических примитивов, которыми могут быть отрезки пря­мых — векторы (откуда и название метода вывода), дуги, окружности. К вектор­ным устройствам вывода статических изображений относятся перьевые плоттеры. Существовали (а, может, где-то используются и сейчас) и векторные мониторы, однако ввиду сложности построения системы управления лучом, обеспечивающей быстрое и точное движение луча по сложной траектории, эта линия угасла. Рас­смотрим растровую систему вывода изображений, подразумевая в качестве око­нечного устройства монитор с электронно-лучевой трубкой — CRT (Catode Ray Terminal, дословно — монитор на катодно-лучевой трубке). Сканирование экрана модулированным лучом обеспечивается генераторами горизонтальной и вертикаль­ной разверток монитора. Луч может оставлять след только во время прямого хода по строке (слева направо). Строка разбивается на некоторое количество точек раз­ложения, каждая из которых может иметь состояние (яркость и цвет), не зависи­мое от других (для монитора это разбиение условно). На обратном ходе по строке луч принудительно гасится. Следующая строка прорисовывается параллельно предыдущей, но с некоторым вертикальным смещением (вниз), и так происходит ска­нирование до окончания кадра — достижения правого нижнего угла экрана. Во время обратного хода луча по вертикали, за время которого генератор горизон­тальной развертки успеет сделать несколько строчных циклов, луч также прину­дительно гасится. В следующем кадре сканирование может производиться по-раз­ному. В системах с прогрессивной (Progressive), или нечередующейся (N1 — Non­interlaced), разверткой луч идет по тем же самым строкам (рис. 1, а). В системах с чересстрочной разверткой (IL — Interlaced) луч пойдет по строкам, смещенным по вертикали на половину шага строки (рис. 1, б). Таким образом, всю поверх­ность экрана луч проходит за два цикла кадровой развертки, называемых полу­кадрами. Чересстрочная развертка позволяет почти вдвое снизить частоту гори­зонтальной (строчной) развертки, а следовательно, и темп вывода точек изобра­жения. Выгода от этого снижения будет понятна позже, а пока поясним, как опре­деляются частоты развертки.

 

 

 
 

 


Рисунок 1. Сканирование экрана: а – прогрессивная развертка; б – чересстрочная развертка

 

Как известно, глаз является инерционным органом зрения — он воспринима­ет изменение яркости или освещенности только до какой-то определенной час­тоты. Существует понятие критической частоты световых мельканий (КЧСМ), которую измеряют так: человек смотрит неподвижно на некоторый безынерционный источник света (например, светодиод), который вспыхивает и гаснет с плавно повышаемой частотой. Сначала человек воспринимает вспышки по от­дельности, с повышением частоты он видит уже только мерцание, а начиная с некоторой частоты, мерцания для него сливаются в ровный свет. Эта частота и называется критической, и у разных людей она может находиться в пределах примерно 40-60 Гц. Неподвижность взгляда и источника в нашем опыте огова­ривалась, поскольку при движении мелькающего объекта человек будет его вос­принимать как трассу прерывистых светящихся точек (стробоскопический эф­фект). Наблюдение мерцающих объектов раздражает и утомляет зрительную си­стему, поэтому частота кадров (прорисовки экрана) должна быть, по крайней мере, не ниже значения КЧСМ. Таким образом, мы получили ориентировочное значе­ние минимальной частоты кадров, равное 50 Гц (эта компромиссная частота при­меняется во многих телевизионных системах). Теперь посмотрим, что из этого следует. Вполне очевидно, что для качественного изображения экран должен иметь как можно больше точек матрицы разложения — то есть строк в кадре и точек на строке. Возьмем популярный режим 800x600 (600 строк по 800 точек). За один период прогрессивной кадровой развертки луч должен успеть прочер­тить 600 видимых строк, да еще некоторое количество невидимых строк (при­мерно 50) он прочертит на обратном ходе по кадру. Получается, что частота строк должна составить 50 Гц * (600 + 50) = 32,5 кГц (вроде и не так уж много). Этой частоте соответствует период около 30 мкс (1/32,5), из которого на прямой ход по строке остается около 25 мкс. За это время необходимо вывести 800 точек строки, так что на каждую точку отводится 25/800 = 0,03 мкс, что соответствует частоте вывода точек в 30 МГц, а это для электронных схем уже высокая часто­та. Поскольку соседние точки выводимого изображения в принципе друг с дру­гом не связаны, то полоса частот сигнала, модулирующего интенсивность луча, должна быть несколько выше этого значения (примерно на 25 %). Такую широ­кую полосу пропускания должен обеспечивать весь видеотракт: видеоусилители модуляторов лучей, сигнальные линии интерфейсного кабеля, и, наконец (вер­нее, сначала), такой широкополосный сигнал должен сформировать графичес­кий адаптер. На всех этих стадиях высокие частоты порождают технические про­блемы. Если реальная полоса пропускания в этом тракте будет уже, четкого изоб­ражения получить не удастся — переходы будут размыты. Если же частотная характеристика тракта в требуемом диапазоне будет неравномерной, появятся специфические искажения цветов или яркости около границ отображаемых объек­тов (справа от граничной линии). Понятно, что с технической точки зрения есть стимулы снижать требуемую верхнюю границу полосы частот видеотракта. При чересстрочной развертке за каждый полукадр сканируется только половина строк разложения (четные в одном полукадре и нечетные в другом), следовательно, строчная частота уменьшается, а длительность прохода видимой части строки увеличивается примерно вдвое. Таким образом, при заданных условиях (разре­шении экрана и ограничении минимальной кадровой частоты) чересстрочная развертка позволяет снизить требуемую полосу пропускания вдвое.

Как видно из вышеприведенных выкладок, частотные параметры видеосисте­мы определяются, исходя из желаемой частоты кадров, разрешения экрана и ре­жима развертки. Заботясь о зрении пользователя, частоту кадров стремятся повы­шать. При низкой частоте экран начинает мерцать, что особо заметно на больших белых полях изображения (в полном смысле слова яркий тому пример — белый фон в приложениях Windows). Разрешение экрана стремятся увеличить — чем оно выше, тем больше информации можно уместить на экране. Поскольку размер эк­рана постоянно увеличивается — монитор на 19" является уже нормой для многих видов деятельности, — потребность в разрешении, скажем, 1600 х 1200 вполне реальна. Но по нашим выкладкам для этого уже требуется полоса 120 МГц (а кадровая частота 50 Гц — это отнюдь не идеал). Применение чересстрочной развертки годится лишь как вынужденная мера, поскольку имеет свои специфи­ческие неприятные «видеоэфекты»: если выводится тонкая (в одну строку то­чек) горизонтальная линия, она будет заметно мерцать. Это и понятно, ведь про­рисовывается она только в одном из полукадров, следовательно, с половинной кадровой частотой. Если изображение потолще (один и тот же элемент имеет точки в соседних строках), его мерцание будет почти незаметным. Итак, вожде­ленные цели ясны: частота кадров — выше, разрешение (по вертикали и гори­зонтали) — больше, развертка — не чересстрочная (Non Interlaced). Забегая немного вперед, заметим, что чем выше частота развертки, тем ниже производи­тельность графической системы при построении изображений. С точки зрения пользователя, привлекательность чересстрочного режима развертки заключает­ся в цене устройств — поскольку для прогрессивной развертки требуется более высокое качество компонентов всего видеотракта, построчная развертка с высо­кой частотой кадров при режимах высокого разрешения — дорогое удовольствие. Но для профессиональной работы с текстом, графического дизайна и других ви­дов деятельности ухудшение зрения обойдется дороже. Чересстрочная разверт­ка широко применяется в телевидении, где видеосигнал приходится «пропихи­вать» через радиоканал, с шириной полосы которого всегда имеются проблемы. Современные мониторы и графические адаптеры, применяемые в PC, использу­ют оба режима развертки с различными значениями частоты кадров. Естествен­но, что работать они должны в согласованных режимах.

Рассмотрев работу конечного устройства (монитора), обсудим способы формирования изображения в графическом адаптере. Итак, у нас имеется матрица точек экрана, образованная горизонтальными строками растра (номер строки — вертикальная координата матрицы) и точками разложения строки (номер точки в строке — горизонтальная координата матрицы). Эта матрица сканируется по­строчным или чересстрочным образом, и во время прямого хода луча по види­мым строкам графический адаптер должен формировать сигналы управления яркостью базисных цветов монитора (или одного сигнала яркости в монохром­ном варианте). За это время последовательно (и синхронно с ходом луча) долж­на выводиться информация о яркости и цвете всех точек данной строки. Синх­ронизация обеспечивается формированием горизонтальных и вертикальных син­хроимпульсов. Таким образом, графический адаптер является задающим устрой­ством, а монитор со своими генераторами разверток должен вписаться в задан­ные параметры синхронизации.

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

 

Графический режим

 

В графическом режиме имеется возможность индивидуального управления све­чением каждой точки экрана монитора независимо от состояния остальных. Этот режим обозначают как Gr (Graphics) или АРА (All Points Addressable — все точ­ки адресуемы). В графическом режиме каждой точке экрана — пикселу — соот­ветствует ячейка специальной памяти, которая сканируется схемами адаптера синхронно с движением луча монитора. Точнее было бы сказать наоборот — фи­зически движение луча вторично, так как монитор можно и не подключать, а графический адаптер все равно будет сканировать память, но логически вся конструкция строится, исходя именно из поведения монитора. Эта постоянно циклически сканируемая (с кадровой частотой) память называется видеопамя­тью (Video Memory), или VRAM (Video RAM). Последнее сокращение можно спутать с названием специализированных микросхем динамической памяти, оптимизированной именно под данное применение. Процесс постоянного сканиро­вания видеопамяти называется регенерацией изображения, и, к счастью, этого же сканирования оказывается достаточно для регенерации информации микросхе­мам динамической памяти, применяемой в этом узле. Для программно-управля­емого построения изображений к видеопамяти также должен обеспечиваться до­ступ со стороны системной магистрали компьютера, причем как по записи, так и по чтению. Количество бит видеопамяти, отводимое на каждый пиксел, опреде­ляет возможное число состояний пиксела — цветов, градаций яркости или иных атрибутов (например, мерцание). Так, при одном бите на пиксел возможны лишь два состояния — светится или не светится. Два бита на пиксел доставляли нема­ло удовольствия любителям цветных игрушек даже на адаптерах CGA — можно было иметь одновременно четыре цвета на экране. Четыре бита на пиксел (16 цве­тов), обеспечиваемые адаптером EGA, были достаточны для многих графичес­ких приложений (например, графики в САПРах). Пределом мечтаний в свое вре­мя было 256 цветов (8 бит на пиксел) адаптера VGA — цветная фотография розы из комплекта графического редактора Paintbrush на экране монитора казалась великолепной. Сейчас остановились на режимах High Color (16 бит; 65 536 цветов), и True Color — «истинный цвет» — (24 бит; 16,7 миллиона цветов), реализуемых современными адап­терами и мониторами SVGA. 24 бита распределяются между базисными цве­тами R:G:B поровну (5:5:5 и 8:8:8), 16 бит — с учетом особенностей цветовосприятия неравномерно (5:6:5 или 6:6:4). Логически видеопамять может быть организована по-разному, в зависимости от количества бит на пиксел.

В случае одного или двух бит на пиксел вполне логично, что каждая ячейка (байт) соответствует восьми или четырем соседним пикселам строки (рис. 2). При сканировании ячейка считывается в регистр сдвига, из которого информа­ция о соседних точках последовательно поступает на выходные цепи адаптера. Такой способ отображения называется линейным — линейной последователь-нос­ти пикселов соответствует линейная последовательность бит (или групп бит) видеопамяти.

В адаптере EGA количество бит на пиксел увеличили до четырех и видеопа­мять разбили на четыре области-слоя, называемых также и цветовыми плоско­стями (рис. 8.3). В каждом слое используется линейная организация, где каж­дый байт содержит по одному биту восьми соседних пикселов. Слои сканируют­ся (считываются в сдвиговые регистры) одновременно, в результате параллель­но формируются по четыре бита на каждый пиксел. Такое решение позволяет снизить частоту считывания ячеек памяти — одна операция чтения производит­ся за время прохода лучом восьми пикселов. Забота о снижении частоты считы­вания понятна — быстродействие памяти ограничено, а ведь в эту память нужно информацию когда-то и записывать. Ячейки слоев, отвечающие за одни и те же пикселы, имеют совпадающий адрес. Это позволяет производить параллельную запись информации сразу в несколько цветовых плоскостей (запись для каждо­го слоя разрешается индивидуально), что также экономит время. Считывание со стороны магистрали, конечно, возможно только послойное.

 
 

 

 


Рисунок 2. Линейное отображение пикселов в видеопамяти: а – 1 бит на пиксел;

б – 2 бита на пиксел

 

 
 

 

 


Рисунок 3. Многослойное отображение пикселов в видеопамяти

 

 

В режимах 8, 16 и 24 бит на пиксел также используется линейная организа­ция, но каждый байт (слово или три байта) отвечает уже за цвет одного пиксела. Многоплоскостная организация здесь уже была бы неэффективной.

Вышеописанные варианты организации видеопамяти — и линейный, и мно­гоплоскостной — представляют собой отображение матрицы пикселов экрана на биты видеопамяти — Bit Mapping. Растровый формат хранения изображений, при котором биты так или иначе отображают пикселы, называется битовой картой (BitMap). С точки зрения плотности хранения графической информации этот формат не самый эффективный, но в видеопамяти растрового дисплея вслед­ствие высокого темпа вывода информации при регенерации изображения иной формат неприемлем. В векторных дисплеях, о которых мы упоминали, в памяти хранились только векторные описатели фигур, что для контурных изображений обычно оказывается компактнее.

Объем видеопамяти (в битах), требуемый для хранения образа экрана, опре­деляется как произведение количества пикселов в строке на количество строк и на количество бит на пиксел. Так, для режима HGC 720 х 350 с одним битом на точку он составляет 252 000 бит или около 31 Кбайт, а 800 х 600 х 256 цветов — 480 000 бит или около 469 Кбайт. Если физический объем видеопамяти превы­шает необходимый для отображения матрицы всего экрана, видеопамять можно разбить на страницы. Страница — это область видеопамяти, в которой умещает­ся образ целого экрана. При многостраничной организации видеопамяти только одна из них может быть активной — отображаемой на экран. Этим страницы принципиально отличаются от слоев, которые отображаются одновременно.

Формирование битовой карты изображения в видеопамяти графического адап­тера производится под управлением программы, исполняемой центральным про­цессором. Сама по себе задача формирования процессору вполне по силам, но при ее решении требуется пересылка большого объема информации в видеопа­мять, а для многих построений еще и чтение видеопамяти со стороны процессо­ра. Видеопамять большую часть времени занята выдачей информации схемам регенерации изображения в довольно напряженном темпе. От этого процесса она свободна только во время обратного хода луча по строке и кадру, но это мень­шая часть времени. Если обращение к активной странице видеопамяти со сторо­ны процессора происходит во время прямого хода и быстродействия схем адап­тера недостаточно для того, чтобы это обращение вписалось между соседними выборками процесса регенерации, на экране появится штрих от несчитанной ин­формации пикселов. Если такое обращение происходит часто, на экране появля­ется «снег», что неприятно. Дожидаться обратного хода по строке или кадру на­кладно: строчный период коротких (несколько микросекунд) интервалов обрат­ного хода имеет порядок 25 мкс, а кадровый период длинного (миллисекунды) обратного хода имеет порядок 20 мс, в то время как цикл обращения процессора к обычной памяти не превышает сотен (у современных компьютеров — десят­ков) наносекунд. Так что канал связи процессора с видеопамятью представляет собой узкое горлышко, через которое пытаются протолкнуть немалый поток дан­ных, причем чем более высокое разрешение экрана и чем больше цветов (бит на пиксел), тем этот поток должен быть интенсивнее. Конечно, при выводе стати­ческой картинки это вроде и не страшно, но «оживить» изображение оказывается проблематично. Выходов из этого затруднения имеется несколько. Во-пер­вых, повышают быстродействие видеопамяти. Во-вторых, расширяют разрядность шин графического адаптера, причем как внутренней (шины видеопамяти), так и интерфейсной, и применяют высокопроизводительные шины (раньше локаль­ную VLB, теперь PCI или порт AGP). Расширение разрядности позволяет за один цикл обращения передать большее количество бит данных — повысить про­изводительность. Однако если у адаптера, к примеру VGA, разрядность интер­фейсной шины — 16 бит, а установлен минимальный объем памяти, при кото­ром используется только 8 бит, то эффективная разрядность интерфейса окажется всего 8 бит. То же относится и к адаптерам с 32-разрядной шиной. Этим объяс­няется не совсем очевидный факт, что производительность графического адапте­ра зависит от объема установленной видеопамяти. В-третьих, повысить скорость видеопостроений можно кэшированием видеопамяти или затенением видеопа­мяти, что, по сути, почти одно и то же. В этом случае при записи в область видеопамяти данные будут записаны как в видеопамять, так и в ОЗУ (или даже в кэш), а при считывании из этой области обращение будет только к быстродей­ствующему ОЗУ. И в-четвертых, можно принципиально сократить объем инфор­мации, передаваемой графическому адаптеру, но для этого графический адаптер должен быть наделен «интеллектом». В современных компьютерах используют­ся все эти решения.

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

Команды рисования (Drawing Commands) обеспечивают построение графи­ческих примитивов — точки, отрезка прямой, прямоугольника, дуги, эллипса. Примитивы такого типа в командах описываются в векторном виде, что гораздо компактнее, чем их растровый образ. Таким образом, удается значительно сокра­тить объем передаваемой графической информации за счет применения более эффективного способа описания изображений. К командам рисования относит­ся и заливка замкнутого контура, заданного в растровом виде, некоторым цветом или узором (pattern). Она ускоряется особенно эффективно: при программной реализации процессор должен просмотреть содержимое видеопамяти вокруг за­данной точки, двигаясь по всем направлениям до обнаружения границы контура и изменяя цвет пикселов на своем пути. При этом требуется чтение большого объема данных видеопамяти, их анализ и запись модифицированных данных об­ратно в видеопамять. Процессор интеллектуального адаптера способен выпол­нить эту операцию быстро и без выхода с этим потоком данных на внешнюю магистраль.

Копирование блока с одного места экрана на другое применяется для «про­крутки» изображения экрана в разных направлениях. Эта команда сводится к пересылке блока бит — BitBlT (Bit Block Transferring), и эта операция интеллек­туальным адаптером может быть сильно ускорена.

Для формирования курсора на графическом экране применяют команды ра­боты со спрайтами. Спрайт (Sprite) — небольшой прямоугольный фрагмент изображения, который может перемещаться по экрану как единое целое. Перед ис­пользованием его программируют — определяют размер и растровое изображе­ние для него, после этого он может перемещаться по экрану, для чего достаточно только указывать его координаты.

Аппаратная поддержка окон (Hardware Windowing) упрощает и ускоряет ра­боту с экраном в многозадачных (многооконных) системах. На традиционном графическом адаптере при наличии нескольких, возможно, перекрывающих друг друга окон программе приходится отслеживать координаты обрабатываемых то­чек с тем, чтобы не выйти за пределы своего окна. Аппаратная поддержка окон упрощает вывод изображений: каждой задаче выделяется свое окно — область видеопамяти требуемого размера, в котором она работает монопольно. Взаимное расположение окон сообщается интеллектуальному адаптеру, и он для регенера­ции изображения синхронно с движением луча по растру сканирует видеопа­мять не линейно, а перескакивая с области памяти одного окна на другое.

Если объем видеопамяти превышает необходимый для данного формата эк­рана и глубины цветов, то в ней можно строить изображение, превышающее по размеру отображаемую часть. Интеллектуальному адаптеру можно поручить па­норамирование (Panning) — отображение заданной области. При этом горизон­тальная и вертикальная прокрутка изображения не потребует операций блочных пересылок (конечно, в пределах сформированного большого изображения) — для перемещения достаточно лишь изменить указатель положения.

Вышеописанные функции интеллектуального адаптера относятся к двумер­ной графике (2D). Современные графические адаптеры берут на себя и многие функции построения трехмерных изображений, о чем более подробно рассказа­но в главе 4. Трехмерное изображение должно состоять из ряда поверхностей различной формы. Эти поверхности «собираются» из отдельных элементов-по­лигонов, чаще треугольников, каждый из которых имеет трехмерные координа­ты вершин и описание поверхности (цвет, узор). Перемещение объектов (или наблюдателя) приводит к необходимости пересчета всех координат. Для созда­ния реалистичных изображений учитывается перспектива — пространственная и атмосферная (дымка или туман), освещенность поверхностей и отражение света от них, прозрачность и многие другие факторы.

Ускорение построений в интеллектуальном адаптере обеспечивается несколь­кими факторами. Во-первых, это сокращение объема передачи по магистрали. Во-вторых, во время работы процессора адаптера центральный процессор свобо­ден, что ускоряет работу программ даже в однозадачном режиме. В-третьих, про­цессор адаптера, в отличие от процессора с самой сложной в мире системой ко­манд — представителя семейства х86, ориентирован на выполнение меньшего количества инструкций, а потому способен выполнять их гораздо быстрее цент­рального. И, в-четвертых, скорость обмена данных внутри адаптера может повы­шаться за счет лучшего согласования обращений к видеопамяти для операций построения с процессом регенерации изображения, а также за счет расширения разрядности внутренней шины данных адаптера. В графических адаптерах кон­ца 90-х годов широко применялась двухпортовая видеопамять VRAM и WRAM с разрядностью внутренней шины 64 бит (при 32-битной шине внешнего интерфейса). Современные адаптеры с SD-акселераторами (самые критичные к про­изводительности памяти) строятся на памяти SGRAM (SDRAM) со 128-разряд­ной шиной, а в самых мощных применяется память с удвоенной частотой передачи DDR SDRAM. Правда, и здесь полная разрядность шины (но уже внутренней) может и не использоваться при малом объеме установленной ви­деопамяти. Разрядность шины пока дальше не увеличивают, но встречаются адап­теры и с двойной внутренней шиной, способной работать в полнодуплексном режиме.

По отношению к центральному процессору и оперативной памяти компьюте­ра различают графические сопроцессоры и акселераторы. Графический сопроцес­сор представляет собой специализированный процессор с соответствующим ап­паратным окружением, который подключается к шине компьютера и имеет дос­туп к его оперативной памяти. В процессе своей работы сопроцессор пользуется оперативной памятью, конкурируя с центральным по доступу и к памяти, и к шине. Графический акселератор работает автономно и при решении своей задачи со своим огромным объемом данных может и не выходить на системную шину. Акселераторы являются традиционной составляющей частью практичес­ки всех современных графических адаптеров. Акселераторы двумерных опера­ций (2D-accelerators), необходимых для реализации графического интерфейса пользователя GUI (Graphic User Interface), часто называют Windows-акселерато­рами, поскольку их команды обычно ориентированы на функции этой популяр­ной операционной системы. Более сложные акселераторы выполняют и трех­мерные построения, их называют SD-акселераторами.

Для построения сложных трехмерных изображений графическому акселера­тору будет явно тесно в ограниченном объеме видеопамяти. Для обеспечения доступа к основной памяти компьютера он должен иметь возможность управле­ния шиной (bus mastering). Специально для мощных графических адаптеров в 1996 году появился новый канал связи с памятью — AGP (Accelerated Graphic Port). Обеспечив высокую пропускную способ­ность порта, разработчики AGP предложили технологию DIME (Direct Memory Execute). По этой технологии графический акселератор является мастером шины AGP и может пользоваться основной памятью компьютера для своих нужд при трехмерных построениях. Например, в основной памяти могут храниться тек­стуры, которые акселератор накладывает на трехмерные поверхности. При этом снимается ограничение на размер описания текстур, которые без AGP приходит­ся держать в ограниченном объеме видеопамяти. На дешевое решение проблемы «тесноты» нацелена и архитектура однородной памяти UMA, которая может быть реализована с помощью AGP. Однако AGP позволяет сохранить и локальную память на графическом адаптере (видеобуфер) и расширение доступной памяти не отзывается снижением производительности.

Итак, мы рассмотрели варианты организации видеопамяти и кратко обсуди­ли способы формирования в ней битовой карты изображения. При регенерации на выходе видеопамяти (или сдвиговых регистров) имеется некоторое количе­ство бит, отвечающих за раскраску текущего выводимого пиксела. Количеством этих бит N определяется максимальное число цветов, присутствующих на экране С = 2N. Однако трактовать эти биты можно по-разному. При одном бите на пиксел и монохромном мониторе трактовка в принципе однозначна (светится — не светится), хотя были мониторы, допускающие реверс изображения. При двух битах на точку возможности цветного монитора, у которого можно управлять тремя цветами, используются ограниченно: монитор обеспечивает по крайней мере 8 цветов, а адаптер может выдать только 4. Для смягчения этого дисбалан­са применили так называемую технику палитр (Palette). Ее суть заключается в том, что биты одного пиксела, поступающие с видеопамяти, перед выходом в интерфейс монитора проходят через некоторый управляемый преобразователь. Выход этого преобразователя имеет разрядность, поддерживаемую интерфейсом монитора, и биты видеопамяти задают номер цвета в выбранной палитре цветов. Переключив палитру (или перепрограммировав ее набор цветов), можно полу­чить другую гамму цветов на экране, но одновременно будет присутствовать не более 2м цветов.

Текстовый режим

 

В символьном, или текстовом, режиме формирование изображения происходит несколько иначе. Если в графическом режиме (АРА) каждой точке экрана соот­ветствует своя ячейка видеопамяти, то в текстовом режиме ячейка видеопамяти хранит информацию о символе, занимающем на экране знакоместо определенно­го формата. Знакоместо представляет собой матрицу точек, в которой может быть отображен один из символов определенного набора. Здесь умышленно применя­ется слово «точка», а не «пиксел», поскольку пиксел является сознательно ис­пользуемым элементом изображения, в то время как точки разложения символа, в общем случае, программиста не интересуют. В ячейке видеопамяти хра



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-28 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: