Смекни!
smekni.com

Реализация трехмерной графики (стр. 4 из 10)

Ускорение построений в интеллектуальном адаптере обеспечивается несколь­кими факторами. Во-первых, это сокращение объема передачи по магистрали. Во-вторых, во время работы процессора адаптера центральный процессор свобо­ден, что ускоряет работу программ даже в однозадачном режиме. В-третьих, про­цессор адаптера, в отличие от процессора с самой сложной в мире системой ко­манд — представителя семейства х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м цветов.

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

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

В текстовом режиме экран организуется в виде матрицы знакомест, образо­ванной горизонтальными линиями LIN (Line) и вертикальными колонками COL (Column). Этой матрице соответствует аналогичным образом организованная видеопамять. Адаптер, работающий в текстовом режиме, имеет дополнительный блок — знакогенератор. Во время сканирования экрана выборка данных из оче­редной ячейки видеопамяти происходит при подходе к соответствующему зна­коместу (рис. 4), причем одна и та же ячейка видеопамяти будет выбираться при проходе по всем строкам растра, образующим линию знакомест. Считанные данные попадают в знакогенератор, который вырабатывает построчную разверт­ку соответствующего символа — его изображение на экране. Знакогенератор пред­ставляет собой запоминающее устройство — ОЗУ или ПЗУ. На его старшие ад­ресные входы поступает код текущего символа из видеопамяти, а на младшие — номер текущей строки в отображаемой линии знакомест. Выходные данные со­держат побитную развертку текущей строки разложения символа (в графическом режиме эти данные поступали из видеопамяти). Необходимый объем памя­ти знакогенератора определяется форматом знакоместа и количеством отобра­жаемых символов. Самый «скромный» знакогенератор имеет формат знакомес­та 8 х 8 точек, причем для алфавитно-цифровых символов туда же входят и меж­символьные зазоры, необходимые для читаемости текста. Поскольку в PC при­нято 8-битное кодирование символов, для такого знакогенератора требуется 8 х 28 = 2К 8-разрядных слов. Лучшую читаемость имеют матрицы 9 х 14 и 9 х 16 символов. Если знакогенератор выполнен на микросхеме ПЗУ, то набор отобра­жаемых символов оказывается жестко фиксированным (в лучшем случае пере­ключаемым, для чего может использоваться несколько выбираемых банков па­мяти знакогенератора). Для знакогенераторов на ПЗУ изменение таблицы сим­волов (например, русификация) становится сложным делом. Если микросхема ПЗУ установлена в сокет, ее несложно перепрограммировать или просто заме­нить. Запаянная микросхема знакогенератора дополнительно осложняет эту за­дачу, а размещение ПЗУ внутри специализированной БИС, что случалось в ма­логабаритных ПК, делает ее практически невыполнимой. Когда знакогенератор выполняют на микросхеме ОЗУ, естественно, обеспечивают и режим, в котором его содержимое можно по крайней мере программно загрузить. Адаптеры с загру­жаемым знакогенератором русифицируются чисто программными средствами.

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


Рисунок 4. Формирование изображения в текстовом режиме