Лекция №11-3

advertisement
Видеотерминальные устройства ПК
Видеотерминальные устройства предназначены для оперативного
отображения текстовой и графической информации в целях визуального
восприятия ее пользователем
Видеотерминал состоит из
 видеомонитора (дисплея) и
 видеоконтроллера (видеоадаптера).
Видеоконтроллеры входят в состав системного блока ПК (находятся на
видеокарте, устанавливаемой в разъем материнской платы).
Видеоконтроллер предназначен для преобразования данных в сигнал,
отображаемый монитором, и для управления работой монитора.
Видеомониторы — это внешнее устройства ПК. Видеомонитор, дисплей,
или просто монитор, — устройство визуализации информации на экране.
Видеоадаптеры (видеокарты) и мониторы
Устройство, которое называется видеоадаптером (или видеоплатой,
видеокартой), есть в каждом компьютере. В виде устройства,
интегрированного в системную плату, либо в качестве самостоятельного
компонента – платы расширения. Главная функция, выполняемая
видеокартой, это преобразование полученной от центрального процессора
информации и команд в формат, который воспринимается электроникой
монитора, для создания изображения на экране. Монитор обычно является
неотъемлемой частью любой системы, с помощью которого пользователь
получает визуальную информацию.
Современная
видеокарта
(видеоадаптер)
должна
реализовать
возможности монитора (разрешение экрана, кадровую частоту и глубину
цветности).
Современные видеокарты — это одна из самых сложных и дорогих
составляющих ПК. Фактически видеокарта представляет собой своеобразный
компьютер в компьютере. Плата видеокарты превосходит по сложности
разводки и количеств слоев материнскую плату. На самой видеокарте
имеется свой процессор и своя оперативная память.
Более того, как NVIDIA, так и AMD представили SDK (Software
Development Kit — набор инструментальных средств разработчика), которые
позволяют производить характерные для центрального процессора
вычисления, пользуясь исключительно возможностями графических чипов.
В настоящее время видеокарта, являясь периферийным устройством,
только по интерфейсу должна полностью соответствовать системной плате и
монитору, а вот как внутри нее будет моделироваться трехмерное
изображение — это остается прерогативой разработчиков. Более мощный
(быстрый и с большим набором функций) графический процессор создает
более реалистическое изображение, Соответственно, разработчики
графических процессоров, особенно в последнее время, значительно
превосходя корпорацию Intel по части внедрения новинок, совершенствуют
видеосистему персонального компьютера, превращая ее чуть ли не в
самостоятельное устройство, хотя при этом сохраняется старая и архаичная
система построения видеоизображения, которая появилась в первых
компьютерах IBM PC.
А если еще вспомнить, что вот-вот в индустрии центральных
процессоров произойдет небольшая революция и графическое ядро
переместится на кристалл центрального процессора, то в технологическую
мощь индустрии GPU (Graphics Processing Unit) уверуют даже самые
убежденные скептики.
Прежде чем переходить к классификации и описанию современных
видеокарт, необходимо познакомиться с рядом специфических терминов и
понятий, которые традиционно приводятся в качестве характеристик
видеокарт. Однако такие характеристики, как текселы, вершинные и
пиксельные шейдеры, скорость заполнения и т. д., неразрывно связаны с
пониманием принципов формирования трехмерных объектов и принципов
работы современных графических ускорителей. Поэтому прежде мы
постараемся в самом общем виде дать представление о том, как устроена
видеокарта и как формируется трехмерное изображение.
Устройство современной видеокарты
Любая видеокарта включает в себя следующие
компоненты:
 графический процессор;
 микросхему BIOS;
 видеопамять;
 цифро-аналоговый преобразователь (RAMDAC);
 контроллер интерфейса.
обязательные
Графический процессор
Графический процессор (англ. Graphics Processing Unit, GPU) —
отдельное устройство персонального компьютера или игровой приставки,
выполняющее графический рендеринг. Современные графические
процессоры очень эффективно обрабатывают и изображают компьютерную
графику, благодаря специализированной конвейерной архитектуре они
намного эффективнее в обработке графической информации, чем типичный
центральный процессор.
Графический процессор в современных видеоадаптерах применяется в
качестве ускорителя трёхмерной графики, однако его можно использовать в
некоторых случаях и для вычислений (GPGPU).
особенностями по сравнению с ЦПУ являются:
Отличительными
 архитектура, максимально нацеленная на увеличение скорости
расчёта текстур и сложных -графических объектов;
 ограниченный набор команд.
Видеоконтроллер отвечает за вывод изображения из видеопамяти,
регенерацию ее содержимого, формирование сигналов развертки для
монитора и обработку запросов центрального процессора. Для исключения
конфликтов при обращении к памяти со стороны видеоконтроллера и
центрального процессора первый имеет отдельный буфер, который в
свободное от обращений ЦП время заполняется данными из видеопамяти.
Если конфликта избежать не удается - видеоконтроллеру приходится
задерживать обращение ЦП к видеопамяти, что снижает производительность
системы; для исключения подобных конфликтов в ряде карт применялась так
называемая двухпортовая память, допускающая одновременные обращения
со стороны двух устройств.
Многие современные видеоконтроллеры является потоковыми - их
работа основана на создании и смешивании воедино нескольких потоков
графической информации. Обычно это основное изображение, на которое
накладывается изображение аппаратного курсора мыши и отдельное
изображение в прямоугольном окне. Видеоконтроллер с потоковой
обработкой, а также с аппаратной поддержкой некоторых типовых функций
называется акселератором или ускорителем, и служит для разгрузки ЦП от
рутинных операций по формированию изображения.
На заре развития персональных компьютеров видеокарты выполняли
функцию кадрового буфера. Изображение формировалось центральным
процессором компьютера и программным обеспечением, а карта отвечала
лишь за хранение (в буфере памяти) и вывод с определенной частотой
отдельных кадров на монитор. По мере возрастания требований к качеству и
реалистичности формируемого изображения, а также к скорости рендеринга
отдельных кадров пришло понимание того факта, что центральный
процессор ПК, то есть процессор общего назначения, не в состоянии
эффективно решать специфические задачи формирования трехмерного
изображения и для этих целей требуется специализированный графический
процессор (GPU), который занимался бы исключительно расчетом
трехмерного изображения. Собственно, современные графические
процессоры по сложности не уступают центральным процессорам
(процессорам общего назначения), и разница заключается лишь в их
«специализации», благодаря чему они могут более эффективно справляться с
задачей формирования изображения, выводимого на экран монитора.
Как
и
центральные
процессоры,
графические
процессоры
характеризуются такими параметрами, как
 микроархитектура,
 тактовая частота работы графического ядра и
 технологический процесс производства.
Графические
процессоры
обладают
и
специфическими
характеристиками. К примеру, одна из важнейших характеристик
графического процессора — это число пиксельных конвейеров (Pixel
Pipelines), которое определяет количество обрабатываемых пикселов за один
такт. К примеру, количество пиксельных конвейеров может составлять 12
или даже 16.
Забегая вперед, отметим, что для построения трехмерного изображения
необходимо выполнить целый ряд операций: принять решение, какие
объекты вообще должны присутствовать в сцене (видимые и невидимые),
определить местоположение вершины, которое задает каждый из этих
объектов, построить по этим вершинам грани, заполнить получившиеся
полигоны текстурами в соответствии с освещением, степенью детализации и
с учетом перспективных искажений. Чем тщательнее делаются все эти
расчеты, тем реалистичнее получится трехмерное изображение. Повысить
производительность этих рутинных операций можно, разбив их на стадии и
распараллелив. Именно эти функции и решают пиксельные конвейеры. На
каждой стадии каждый пиксельный конвейер занимается тем, что
просчитывает очередной пиксел конечного изображения с учетом многих
факторов, включая освещение сцены. А для ускорения процесса расчета
используют сразу несколько конвейеров. К примеру, если используется 16
пиксельных конвейеров, то первый конвейер обрабатывает 1-й, затем 17-й,
затем 33-й пиксел и т. д.; второй конвейер — 2-й, 18-й и 34-й соответственно.
Количество конвейеров позволяет определить пиковую скорость
заполнения видеокарты, которая рассчитывается как произведение частоты
ядра на количество конвейеров. Если, к примеру, частота ядра составляет 400
МГц, а количество пиксельных конвейеров равно 12, то скорость заполнения
будет 4,8 Гпиксела/с.
Помимо пиксельных конвейеров, различают также количество
текстурных блоков в каждом конвейере. Число текстурных блоков
определяет количество накладываемых текстур за один проход. К примеру,
два текстурных блока могут накладывать от двух до четырех текстур за
проход. Количество текстурных блоков позволяет определить скорость
заполнения в мегатекселах (пикселах текстур).
Также в графических процессорах присутствуют вершинные конвейеры
(Vertex Pipelines), которые отвечают за расчет геометрии трехмерного
изображения.
Для того чтобы лучше представить себе структуру современного
графического процессора, рассмотрим более детально процесс конвейерного
расчета трехмерного изображения.
На первом этапе данные о вершинах поступают в вершинные конвейеры,
которые занимаются расчетом геометрии сцены. Здесь начинает свою работу
так называемый блок T&L (Transform & Lighting), который отвечает за
некоторые аспекты работы с геометрией и за освещение и работает в паре с
конвейерами. Блок T&L имеет две определяющие характеристики:
максимальное количество источников света и количество обрабатываемых
полигонов.
Обработка данных в вершинном конвейере происходит под управлением
специализированной программы, называемой вершинным шейдером (Vertex
Shader).
На следующем этапе формирования изображения задействуется Z-буфер
для отсечения невидимых полигонов и граней каркасной модели трехмерного
объекта. Далее происходит текстурирование объектов с фильтрацией самих
текстур, для чего задействуются пиксельные конвейеры, работающие под
управлением специализированной программы, называемой пиксельным
шейдером (Pixel Shader).
Необходимо вспомнить о таких программных интерфейсах (Application
Programming Interface, API), как OpenGL и Direct3D. В них описаны
стандарты для работы с трехмерными изображениями. Приложение вызывает
определенную стандартную функцию OpenGL или Direct3D, а шейдеры эту
функцию выполняют.
Вершинные и пиксельные шейдеры имеет свою версию. На сегодняшний
день последней является версия 4.1. И для реализации всех возможностей
программ по обработке пикселов и вершин необходимо, чтобы данную
версию шейдера поддерживали и видеокарта, и само приложение.
На последнем этапе конвейерной обработки данные передаются в буфер
кадров.
Рассмотренный нами алгоритм формирования изображения является
весьма упрощенным. В реальных графических процессорах все обстоит
несколько сложнее. К примеру, для повышения качества изображения
используется технология сглаживания, фильтрации текстур и т. д. О
некоторых из этих технологий будет рассказано далее.
Видеопамять
Для графического процессора требуется видеопамять, играющая роль
кадрового буфера, в который центральный процессор направляет
видеоданные, а затем графический процессор считывает оттуда полученную
информацию. Кроме того, в видеопамяти располагается Z-буфер и хранятся
текстуры. Естественно, для обеспечения эффективной передачи данных
важна пропускная способность видеопамяти.
Видеопамять графической карты характеризуется теми же параметрами,
что и оперативная память ПК, и в этом смысле наиболее важными
характеристиками являются пропускная способность шины памяти, по
которой данные из видеопамяти передаются к графическому процессору, а
также латентность памяти. Пропускная способность шины памяти
определяется разрядностью шины памяти и ее эффективной тактовой
частотой. К примеру, разрядность шины может составлять 512, 256, 128 или
64 бита, а эффективная тактовая частота достигать 4 ГГц.
Ширина шины памяти определяет количество бит, передаваемых между
GPU и памятью за один такт. Собственно, пропускную способность шины
памяти можно найти, если умножить ширину шины на тактовую частоту. К
примеру, если ширина шины составляет 128 бит (16 байт), а тактовая частота
памяти равна 250 МГц, то пропускная способность шины будет 4 Гбайт/с.
Латентность видеопамяти, то есть время выборки данных из памяти,
определяется используемыми чипами памяти. Латентность современных
микросхем видеопамяти составляет порядка 2 не и менее.
Кроме технических характеристик используемой видеопамяти, не менее
важен и ее объем. При недостаточном объеме видеопамяти графический
процессор фак-тически будет простаивать, пока нужные данные
подгружаются из оперативной памяти компьютера. Минимальный объем
видеопамяти современных видеокарт составляет 128 Мбайт, а максимальный
— 2 Гбайт.
Видеопамять служит для хранения изображения. От ее объема зависит
максимально возможное полное разрешение видеокарты – A*B*C, где A количество точек по горизонтали, B - по вертикали, и C - количество
возможных цветов каждой точки. Например, для разрешения 640x480x16
достаточно 256 Кб, для 800x600x256 - 512 Кб, для 1024x768x65536 (другое
обозначение - 1024x768x64k) - 2 Мб, и т.д. Поскольку для хранения цветов
отводится целое число разрядов, количество цветов всегда является степенью
двойки (16 цветов - 4 разряда, 256 - 8 разрядов, 64k - 16, и т.д.).
RAMDAC
ЦАП (цифроаналоговый преобразователь, DAC) служит для
преобразования
результирующего
потока
данных,
формируемого
видеоконтроллером, в уровни интенсивности цвета, подаваемые на монитор.
Все современные мониторы используют аналоговый видеосигнал, поэтому
возможный диапазон цветности изображения определяется только
параметрами ЦАП. Большинство ЦАП имеют разрядность 8x3 - три канала
основных цветов (красный, синий, зеленый, RGB) по 256 уровней яркости на
каждый цвет, что в сумме дает 16.7 млн. цветов. Обычно ЦАП совмещен на
одном кристалле с видеоконтроллером.
После обработки графическим процессором и формирования им
изображения данные передаются в цифро-аналоговый преобразователь
RAMDAC, который непосредственно отвечает за преобразование цифрового
сигнала в аналоговый.
Еще несколько лет назад значительная часть мониторов была способна
понимать сигнал только в аналоговом виде. Сейчас идет активная смена
стандартов и цифровые интерфейсы теснят аналоговые. Последние премьеры
мониторов и видеокарт показывают, что тренд нового поколения — это
интерфейс DisplayPort. Не забывают и об уже устоявшихся интерфейсах,
таких как DVI и HDMI. Для современных ЖК-дисплеев цифровой сигнал
является естественным. Они имеют цифровой видеовход и способны
работать с видеосигналом без участия RAMDAC. Но пока на рынке
присутствует целый парк моделей с аналоговыми входами, в целях
вместимости даже новые видеокарты в обязательном порядке оснащаются
цифро-аналоговым преобразователем и поддерживают подключение
аналоговых устройств.
Главные характеристики RAMDAC — это тактовая частота и
разрядность. Многие карты поддерживают одновременную работу с двумя
мониторами, поэтому в такие карты устанавливаются по два RAMDAC и,
соответственно, по два разъема подключения монитора.
Микросхема BIOS;
Видео-ПЗУ - постоянное запоминающее устройство, в которое записаны
видео-BIOS, экранные шрифты, служебные таблицы и т.п. ПЗУ не
используется видеоконтроллером напрямую - к нему обращается только
центральный процессор, и в результате выполнения им программ из ПЗУ
происходят обращения к видеоконтроллеру и видеопамяти. ПЗУ необходимо
только для первоначального запуска адаптера и работы в режиме MS DOS;
операционные системы с графическим интерфейсом - Windows или OS/2 практически не используют ПЗУ для управления адаптером, хотя и могут
иметь проблемы в работе при ошибках в программе BIOS, не найденных
разработчиками.
Контроллер интерфейса
Контроллер интерфейса отвечает за сопряжение видеокарты с
материнской и компьютера. Пользователи уже успели подзабыть некогда
популярный специаализированный графический интерфейс AGP (Accelerated
Graphic Port), К примеру, видеокарты подключались по интерфейсу AGP 4х с
пропускной способностью 1,06 Гбайт/с или по интерфейсу AGP 8х с
пропускной способно-2,1 Гбайт/с. На рынке осталось мизерное количество
предложений по ним
На смену AGP пришел более перспективный PCI Express, который уже
успел передать виртуальную эстафету вдвойне быстрому PCI Express 2.O.
Для подключения графических карт используется версия PCI Express х16
либо х8. Теоретическая пропускная способность такой шины составляет до
8000 Мбайт/с в обоих направлениях.
Несмотря на выдающуюся пропускную способность и довольно молодой
возраст, мы можем констатировать, что PCI Express 2.0 будет в скором
времени заменена на более скоростным интерфейсом PCI Express 3.0.
Каждое новое поколение использует 16 линий PCI Express Ver. О для
подключения.
На рис. показан внешний вид современной видеокарты. Если сравнить
ее со старыми видеокартами, то особой разницы и не увидишь. Ну, появился
новый интерфейс AGP или PC [-Express, чип на печатной плате обзавелся
вентилятором, вот, внешне, и все отличительные особенности. Если работать
только с офисными пакетами программ, то и но скорости работы разницы
между видеокартами практически пет. Но все меняется, когда запускается
трехмерная игра или программа графического моделирования. Вот тут, не
говоря о скорости работы, невооруженным взглядом видно, что современный
видеоадаптер создает на экране монитора настолько реалистичное
изображение, что трудно поверить, что люди и предметы смоделированы
математически, а не скопированы с фотографий.
Режимы работы видеокарты
Как это и ни странно звучит сегодня, но основной видорежим у
персональных компьютеров — это текстовый режим. В этом режиме
графически элементы — линии и прямоугольники — создаются с
использованием псевдографических символов. И лишь по командам
операционной системы видееокарта переключается в графический режим.
Это хорошо заметно, когда после включения питания компьютер
работает под управлением программ BIOS. Во время начальной загрузки
вывод информации на экран осуществляется в текстовом режиме с
разрешением 720x400 (частота строк — 31.5 кГц, частота кадров — 70 Гц).
Лишь изредка, во время тестирования самого видеоадаптера, происходит
переключениев графический режим с разрешением 640x480 (частота строк—
31.5 кГц. частота кадров— 60 Гц). Отетим, что пользователи используют
текстовый режим работы видесистемы только в режиме MS-DOS или.
Например в операционной системе Linux в режиме терминала.
Появление двух различных принципов построения изображения на
экране монитора возникло исторически. Текстовый режим достался
персональному компьютеру IBM PC от вычислительных машин, где
графический режим в то время являлся весьма уникальной особенностью,
для поддержки которой требовалось необычайно много ресурсов. При этом
чтобы рисовать на экране или печатающем устройстве, использовались
различные ухищрении, напри мер. создавали изображение с помощью набора
символов букв, цифр и знаков препинания. Кстати, тогда активно
использовался термин "средства машинной графики".
На заре компьютерной эпохи текстовый режим был выгоден тем. что для
хранения изображения экрана нужно было всего 4 Кбайт оперативной памяти
(80 знаков в строке и 25 строк). Для каждого символа требовалось всего 2
байта видеопамяти (1 -й байт — код символа. 2-й байт — яркость, цвет,
мигание).
После
удешевления
микросхем
памяти
и
повышения
производительности процессоров текстовый режим перестал пользоваться
популярностью у пользователей, которые теперь предпочитают работать в
графической оболочке, например, операционной системы Windows. Но в
таком случае компьютеру приходится помнить о каждой точке на экране, т. с.
один байт управляет не группой точек, как в текстовом режиме, а всего лишь
одной. Причем когда требуется выводить на экран монитора более
качественное изображение, для хранения информации о цвете и яркости
точки необходимо отводить 2. 3 или 4 байта.
Так как пользователи после непродолжительного восторга от новейшего
компьютера очень скоро снова становятся недовольными возможностями
вывода графической информации на монитор, то разработчики
компьютерного "железа" систематически вводят все новые и новые
стандарты построения изображения. Вначале человеку приходилось работать
за черно-белым монитором, потом появились цветные с довольно скромными
характеристиками. Далее последовательно увеличивалось число выводимых
на экран точек и количество цветов, которые можно было отобразить на
мониторе. Соответственно, каждый стандарт характеризовался своим
разрешением и глубиной цвета (одновременно менялись значения кадровой и
строчной развертки монитора, а также способ синхронизации изображения).
Для того чтобы видеоадаптер и монитор могли корректно работать в
любом стандарте, были введены номера режимов, которые однозначно
характеризуют разрешение, глубину цветности, частоту развертки, а также
режим работы— текстовый или графический (номер режима используется
программистами для работы с видеоадаптерами). Для старых стандартов
MDA (Monochrome Diaplay Adapter). CCA (Color Graphics Adapter). HGC
(Hercules Graphics Card) и EGA (Enhanced Graphics Adapter) предназначены
режимы работы видеокарты от 0 до 13h. Для стандарта VGA (Video Graphics
Amy) используются режимы от 18h до 27h. Для современных режимов
работы, согласно стандарту VESA (Video Electronics Standards Association)
VGA, определены номера от 101h до 11Ah, и это же также относится к
режимам SVGA.
Стандартные типы видеоадаптеров
MDA (Monochrome Display Adapter - монохромный адаптер дисплея) простейший видеоадаптер, применявшийся в первых IBM PC. Работает в
текстовом режиме с разрешением 80x25 (720x350, матрица символа - 9x14),
поддерживает пять атрибутов текста: обычный, яркий, инверсный,
подчеркнутый и мигающий. Частота строчной развертки - 15 Кгц. Интерфейс
с монитором - цифровой: сигналы синхронизации, основной видеосигнал,
дополнительный сигнал яркости.
HGC (Hercules Graphics Card - графическая карта Hercules) - расширение
MDA с графическим режимом 720x348, разработанное фирмой Hercules.
CGA (Color Graphics Adapter - цветной графический адаптер) - первый
адаптер с графическими возможностями. Работает либо в текстовом режиме
с разрешениями 40x25 и 80x25 (матрица символа - 8x8), либо в графическом
с разрешениями 320x200 или 640x200. В текстовых режимах доступно 256
атрибутов символа - 16 цветов символа и 16 цветов фона (либо 8 цветов фона
и атрибут мигания), в графических режимах доступно четыре палитры по
четыре цвета каждая в режиме 320x200, режим 640x200 - монохромный.
Вывод информации на экран требовал синхронизации с разверткой, в
противном случае возникали конфликты по видеопамяти, проявляющиеся в
виде "снега" на экране. Частота строчной развертки - 15 Кгц. Интерфейс с
монитором - цифровой: сигналы синхронизации, основной видеосигнал (три
канала - красный, зеленый, синий), дополнительный сигнал яркости.
EGA (Enhanced Graphics Adapter - улучшенный графический адаптер) дальнейшее развитие CGA, примененное в первых PC AT. Добавлено
разрешение 640x350, что в текстовых режимах дает формат 80x25 при
матрице символа 8x14 и 80x43 - при матрице 8x8. Количество одновременно
отображаемых цветов - по-прежнему 16, однако палитра расширена до 64
цветов (по два разряда яркости на каждый цвет). Введен промежуточный
буфер для передаваемого на монитор потока данных, благодаря чему отпала
необходимость в синхронизации при выводе в текстовых режимах. структура
видеопамяти сделана на основе так называемых битовых плоскостей "слоев", каждый из которых в графическом режиме содержит биты только
своего цвета, а в текстовых режимах по плоскостям разделяются собственно
текст и данные знакогенератора. Совместим с MDA и CGA. Частоты
строчной развертки - 15 и 18 Кгц. Интерфейс с монитором - цифровой:
сигналы синхронизации, видеосигнал (по две линии на каждый из основных
цветов).
MCGA (Multicolor Graphics Adapter - многоцветный графический
адаптер) - введен фирмой IBM в ранних моделях PS/2. Добавлено разрешение
640x400 (текст), что дает формат 80x25 при матрице символа 8x16 и 80x50 при матрице 8x8. Количество воспроизводимых цветов увеличено до 262144
(по 64 уровня на каждый из основных цветов). Помимо палитры, введено
понятие таблицы цветов, через которую выполняется преобразование 64-
цветного пространства цветов EGA в пространство цветов MCGA. Введен
также видеорежим 320x200x256, в котором вместо битовых плоскостей
используется представление экрана непрерывной областью памяти объемом
64000 байт, где каждый байт описывает цвет соответствующей ему точки
экрана. Совместим с CGA по всем режимам, а с EGA - по текстовым, за
исключением размера матрицы символа. Частота строчной развертки - 31
Кгц, для эмуляции режимов CGA используется так называемое двойное
сканирование - дублирование каждой строки формата Nx200 в режиме
Nx400. интерфейс с монитором - аналогово-цифpовой: цифровые сигналы
синхронизации, аналоговые сигналы основных цветов, передаваемые
монитору без дискретизации. Поддерживает подключение монохромного
монитора и его автоматическое опознание - при этом в видео-BIOS
включается режим суммирования цветов по так называемой шкале серого
(grayscale) для получения полутонового чеpно-белого изображения.
Суммирование выполняется только при выводе через BIOS - при
непосредственной записи в видеопамять на монитор попадает только сигнал
зеленого цвета (если он не имеет встроенного цветосмесителя).
VGA (Video Graphics Array - множество, или массив, визуальной
графики) - расширение MCGA, совместимое с EGA, введен фирмой IBM в
средних моделях PS/2. Фактический стандарт видеоадаптера с конца 80-х
годов. Добавлен текстовый режим 720x400 для эмуляции MDA и
графический режим 640x480 с доступом через битовые плоскости. В режиме
640x480 используется так называемая квадратная точка (соотношение
количества точек по горизонтали и вертикали совпадает со стандартным
соотношением сторон экрана - 4:3). Совместим с MDA, CGA и EGA,
интерфейс с монитором идентичен MCGA.
IBM 8514/а - специализированный адаптер для работы с высокими
разрешениями (640x480x256 и 1024x768x256), с элементами графического
ускорителя. Не поддерживает видеорежимы VGA. интерфейс с монитором
аналогичен VGA/MCGA.
IBM XGA - следующий специализированный адаптер IBM. расширено
цветовое пространство (режим 640x480x64k), добавлен текстовый режим
132x25 (1056x400). Интерфейс с монитором аналогичен VGA/MCGA.
SVGA (Super VGA - "сверх" VGA) - расширение VGA с добавлением
более высоких разрешений и дополнительного сервиса. Видеорежимы
добавляются из ряда 800x600, 1024x768, 1152x864, 1280x1024, 1600x1200 все с соотношением 4:3. Цветовое пространство расширено до 65536 (High
Color) или 16.7 млн. (True Color). Также добавляются расширенные
текстовые режимы формата 132x25, 132x43, 132x50. Из дополнительного
сервиса добавлена поддержка VBE. Фактический стандарт видеоадаптера
примерно с 1992 г.
Немного нужно сказать об условных обозначениях режимов. После
режима VGA следует режим SVGA, точнее, все разрешения выше 640x480 и
16 цветов относят к SVGA (Super VGA). В принципе, для каждой
комбинации разрешения и количества цветов существует собственное
обозначение, но широко эти аббревиатуры не используются, т. к. фирмыизготовители присваивают своим новым изделиям названия, чаще всего с
учетом рекламной привлекательности. Периодически делаются попытки
ввести единую классификацию, но особых успехов пока ни одна
международная организация так и не добилась (вопрос осложняется тем, что
приходится учитывать и режимы работа дисплеев самых разнообразных
устройств, например, дисплеев сотовых телефонов). Для ряда применений,
например,
LCD-дисплеев
и
проекторов,
популярна
следующая
классификация:
VGA—640x480.
SVGA — 800x600;
XGA — 1024x768;
SXGA— 1280x1024.
Примечание
Формат экрана (Aspect Raito) — это соотношение его ширины ■ высоте
Традиционные компьютерные мониторы имеют соотношение 4:3.
Для наглядного сравнения различных разрешений, которых на
сегодняшний день накопилось достаточно много, посмотрите на рис.
На рис. 10.2, а — это последовательный ряд увеличения разрешения
традиционных компьютерных мониторов в рамках формата 4:3. где
исключение составляет популярное в настоящее время разрешение
1280x1024 с форматом 5:4. На рис. 10.2, б приведены телевизионные
варианты экранов.
-
В настоящее время выпускаются широкоформатные LCD-панели для
компьютеров, у которых сохраняется разрешение по вертикали как для
вариантов, приведенных на рис. 10.2, а, а формат экрана составляет уже 16:9.
как это показано на рис. 10.2, 6 для вариантов HD-телевидения. Работать с
таким монитором, когда открыто много документов, довольно удобно, т. к.
окна большинства программ рассчитаны на формат 4:3, поэтому на
свободном пространстве можно расположить неактивные в данный момент
окна.
Глубина цвета и разрешение
В настоящее время наиболее популярные режимы для настольных
компьютеров— это разрешение 1024x768 и 1280x1024, а для ноутбуков и
нетбуков — 1024x800. Причем обычно используется самое высокое качество
передачи в 32 бита для каждой точки. Также становятся популярными
широкоформатные мониторы и HD-панели для телевизоров.
Для примера, если посчитать количество пикселов (точек), например,
для наиболее простых вариантов, то при разрешении VGA или 800x600
изображение на экране монитора состоит из 480000точек, а при 1024x768-из
786 432.
Первые компьютерные мониторы оперировали только двумя значениями
яркости точки на экране: есть изображение точки и точка погашена, т. е. да
хранения информации о точке требовался всего один бит. В дальнейшем,
добавили информацию о яркости точки (полутона), а при появлении цвета информацию о трех основных цветах. В результате последовательной
эволюции мониторов количество необходимой информации для каждой
точки изображения возросло от одного бита до трех байт, и это еще не
предел.
В современном мониторе для каждой точки изображения указывается
строго определенный цвет, который получается из смеси трех первичных
цветов - красного, зеленого и синего (RGB). Общее количество оттенков
может достигать миллионов цветов, но для самых простых режимов
используется 16 или 256 цветов.
Минимальный объем необходимой видеопамяти определяется в
зависимости от поддерживаемого разрешения (числа строк, умноженного на
число точе ( в строке) и глубины цвета (необходимого числа байтов для
хранения информации о каждой точке). Соответственно, формула,
связывающая объем видеопамяти с разрешением и количеством
воспроизводимых цветов, выглядит так:
Объем ОЗУ видеопамяти = (число точек в строке) х (число строк) х
(число байт на одну точку).
Возможные варианты выбора приведены в табл. 10.2.
На практике, для работы офисных приложений и просмотра
видеофильмов вполне хватает 8 Мбайт видеопамяти для разрешения 800x600
или 16 Мбайт для разрешения 1024x768. Вся остальная память, свыше этого,
которая имеется сегодня в современных видеоадаптерах, тратится на
сторонние нужды, в частности, для поддержки экранной графики
операционной системы Windows (особенно в Windows Vista).
Использование 128. 256 и 512 Мбайт видеопамяти связано, в первую
очередь, с интересами "игроманов", которым даже 512 Мбайт, честно говоря,
не так уж и много. Следует сказать, что стремительное увеличение объема
видеопамяти в настояшее время не связано с таким же прогрессом
повышения разрешения изображения на экране. Практически уже достигнут
потолок для традиционных систем отображения видеоинформации. Основная
же причина все большего наращивания оперативной памяти видеоадаптера
состоит в том, что на плате видеоадаптера теперь находится видеопроцессор
(GPU. Graphics Processing Unit, графический процессор), который может
самостоятельно. по управляющим командам центрального процессора,
строить изображение различных объектов, в том числе и объемные
изображения (они же— 3D), а это требует необычайно много ресурсов для
хранения промежуточных результатов вычислений и образцов текстур,
которыми заливаются условные плоскости моделируемых фигур.
Внимание!
Даже для офисных приложений, сегодня, если в операционной системе
Windows используется интерфейс DirectX 9 или 10. объем памяти
видеокарты должен быть не менее 128 Мбайт. Для более продвинутых
пользователей желателен объем 256—512 Мбайт, а геймерам лучше
ориентироваться на рубеж в 1 Гбайт.
Технологии построения трехмерных изображений
Основные понятия
Прежде всего нам предстоит познакомиться с основными понятиями
трехмерной графики. К таким понятиям относятся:
 вершина;
 полигон;
 текстура.
Любой трехмерный объект, каким бы сложным он ни был, можно
представить в виде набора простейших полигонов, которыми являются
треугольники.
Вершина
Поскольку речь идет о трехмерной графике, то любой объект
представляется в виде набора точек, называемых вершинами, в трехмерном
пространстве. Каждая вершина в трехмерном пространстве характеризуется
тремя координатами, а система координат определяется тремя осями:
горизонтальной (X), вертикальной (У) и глубины (Z).
Полигон
Соединяя вершины между собой, можно любую трехмерную поверхность
аппроксимировать
набором
полигонов
(многоугольников),
простейшими из которых являются треугольники. Положение этих
полигонов и задается вершинами. Понятно, что для формирования
изображения полигоны необходимо закрасить. Для этого часто прибегают к
текстурам.
Текстура
Текстура — это двухмерное изображение, которое может «натягиваться»
на трехмерные объекты с учетом их формы и положения.
Текстурирование
трехмерных
поверхностей
—
это
самый
распространенный метод закрашивания. К примеру, если бы мы попробовали
смоделировать кирпичную стену без технологии наложения текстур, нам
потребовалось бы прорисовывать множество отдельных граней для
моделирования кирпичей. Текстура дает больше реализма и требует меньше
вычислительных ресурсов, позволяя оперировать со всей стеной как с единой
поверхностью. Все текстуры хранятся в памяти, обычно установленной на
видеокарте.
Для того чтобы придать реалистичность формируемому изображению,
необходимо рассчитать, какие именно объекты должны выводиться на экран,
а какие не должны попасть в поле зрения. К примеру, если один объект
находится спереди, а второй позади, то часть второго объекта должна быть
невидимой.
Для решения этой задачи применяется метод, называемый Zбуферизацией. В так называемом Z-буфере (буфере глубины) хранятся
значения глубины всех пикселов (Z-координатъ!). Когда рассчитывается
новый пиксел, его глубина сравнивается со значениями глубин уже
рассчитанных пикселов с теми же координатами X и У. Если новый пиксел
имеет значение глубины больше какого-либо значения в Z-буфере, то новый
пиксел не записывается в буфер для отображения, если меньше —
записывается.
Процесс обработки текстур и информации кадрового буфера называется
рендерингом (или процессом закраски).
Аппаратная реализация Z-буферизации значительно увеличивает
производительность графической подсистемы. Главная характеристика Zбуфера — это егоразрешающая способность. Она критична для
высококачественного отображения сцен с большой глубиной. Чем выше
разрешающая способность, тем выше дискретность Z-координат и точнее
выполняется рендеринг удаленных объектов. Если при рендеринге
разрешающей способности не хватает, может случиться, что два
перекрывающихся объекта получат одну и ту же координату Z, что вызовет
искажение изображения. Как правило, видеокарты имеют 32-разрядный Zбуфер.
Кроме буфера глубины, позволяющего отсекать невидимые
поверхности, для создания реалистичных трехмерных изображений
необходимо учитывать, что объекты могут быть полупрозрачными. Эффект
полупрозрачности создается путем объединения цвета исходного пиксела с
пикселом, уже находящимся в буфере. В результате цвет точки является
комбинацией цветов переднего и заднего планов. Для учета прозрачности
объектов используется так называемый alpha-коэффициент прозрачности,
который имеет значение от 0 до 1 для каждого цветового пиксела.
Очевидно, что для создания реалистичной картины происходящего на
экране необходимо частое обновление его содержимого. При формировании
каждого следующего кадра SD-акселератор проходит весь путь подсчета
заново, поэтому он должен обладать немалым быстродействием. Но в ЗОграфике применяются и другие методы придания плавности движению.
Наиболее распространенный — метод двойной буферизации (Double
Buffering).
Для двойной буферизации требуется наличие двух областей,
зарезервированных в буфере кадров. Метод Double Buffering использует два
буфера кадров для получения изображения: один для отображения картинки,
другой для рендеринга. В то время как отображается содержимое одного
буфера, в другом происходит рендеринг. Когда очередной кадр обработан,
буферы переключаются (меняются местами). Без применения двойной
буферизации изображение не будет иметь требуемой плавности, то есть
будет прерывистым.
Аппаратное
функций
ускорение
графических
Стандартная видеокарта VGA персонального компьютера, как и ее
предшественники MDA, CGA и EGA, по сути, представляет собой набор
жесткой логики и видеопамяти. Все. что записывается центральным
процессором в видеопамять, п
Так как персональный компьютер с течением времени стал неразрывно
связываться с графическим интерфейсом Windows (графический интерфейс
DirectX) и различными дву- и трехмерными играми, то разработчики
"железа" предприняли ряд шагов по совершенствованию стандартной
видеокарты, чтобы избавить центральный процессор от лишней работы по
прорисовке элементарных изображений. Подобные устройства получили
название графических ускорителей, или иначе графических акселераторов.
Вначале использовались аппаратные ускорители на отдельных платах (увы.
данные устройства появились слишком поздно и не смогли составить
конкуренцию современным решениям). По мерс совершенствования
полупроводниковой технологии удалось разместить все элементы
аппаратных ускорителей на самой плате видеокарты. В настоящее время чип
на видеокарте, он же видео-или графический процессор {GPU. Graphics
Processing Unit), самостоятельно рассчитывает новые параметры точек на
экране по командам центрального процессора. Например, переместить окно
Windows в другое место на экране, нарисовать и закрасить круг или
прямоугольник.
Уделим немного внимания терминологии:
2D Graphics — это двумерная графика, которая позволяет рисовать в одной плоскости. Например, пользовательский интерфейс операционной
системы Windows является ярким примером двумерной графики;
3D Graphics— это трехмерная графика, которая позволяет создавать визуальное отображение трехмерного объекта на плоскости экрана. При этом
видеопроцессор создает (математически рассчитывает) в видеопамяти
трехмерный объект.
При описании способов построения дву- и трехмерных изображений
используются специальные термины, которые часто являются так
называемыми "кальками" с соответствующих английских терминов (заметим,
что не для всех английских терминов есть удачные русские варианты).
Например, рендеринг (Rendering)— это термин, обозначающий процесс
создания изображения на экране с использованием математической модели
объекта и формул для добавления цвета и тени. Термин растеризация
(Rasterization) обозначает процесс разделения объекта на пикселы. Часто
упоминающийся термин текстура (Texture) обозначает двумерное
изображение какой-то поверхности, например, бумаги или металла,
хранящееся в памяти в одном из стандартных пиксельных форматов.
С точки зрения схемотехники графические ускорители двумерной
графики представляют собой простые контроллеры, которые принимают от
центрального процессора команды и строят те или иные фигуры в
видеопамяти. При работе с трехмерной графикой вначале использовались те
же принципы. Но требование повышения качества изображения привело к
тому, что постепенно простенький контроллер на видеокарте превратился в
мощный специализированный процессор со своей особой системой команд.
Так как расчет трехмерных изображений— это множество
математических расчетов с плавающей запятой, то наиболее совершенные
видеопроцессоры обзавелись и математическим сопроцессором. В
дальнейшем число специализированных сопроцессоров стало стремительно
увеличиваться, появилась специализация, когда одна группа сопроцессоров
рассчитывает координаты вершин фигур, а другая, например, проверяет
видимость точек для двумерной проекции. В результате, в современном
видеопроцессоре может быть несколько сотен сопроцессоров, а сама
архитектура GPU стала очень сложной и не похожей на традиционные
решения для центральных процессоров (процессоров общего назначения).
Для примера на рис. 10.3 показана модель конвейеров в GPU GeForce 8800,
который имеет относительно простую и понятную архитектуру; маленькие
квадратики на блок-схеме, сгруппированные по 8 штук, с надписями SP
(Special Processor) — это специализированные сопроцессоры.
Если подвести итог, сейчас на современной видеокарте устанавливается
процессор, мало уступающий по производительности современному
центральному процессору. Кроме того, следует отметить, что графический
процессор умеет моделировать не только дву- и трехмерные изображения, но
и, например, выполнять декомпрессию сжатых видеоданных при
воспроизведении видеофильмов.
ЗD-конвейер
Так как современные видеокарты — это, в первую очередь, широкие
возможности моделирования реалистических изображений объектов, то при
покупке новой видеокарты следует понимать, что имеют в виду пол тем или
иным термином разработчики. Ведь у каждого разработчика чипов для видеокарт есть собственные фирменные технологии моделирования объектов.
Кроме того, не следует забывать, что. в отличие от простых вычислений,
методы построения объектов у каждой видеокарты чуть-чуть свои. Поэтому
далее объясняются основы функционирования .Ю-конвейера или процесса
расчета трехмерного изображения (точнее, его двумерной проекции).
В процессе синтеза трехмерного объекта существуют несколько
основных этапов (их количество зависит от типа видеокарты, используемого
видеопроцессора):
построение геометрической модели — на этом этапе задаются
координаты опорных точек и уравнения связывающих их линий, что
приводит к созданию каркасной модели объекта (wireframe);
деление поверхности объекта но плоские простейшие элементы —работать со сложным объектом очень трудно, поэтому криволинейные
поверхности превращают в набор прямоугольников или треугольников,
создавая граненый объект. Процесс деления называется тесселяциеи
(tessellation);
трансформация — простые объекты чаще всего необходимо определенным образом изменить или трансформировать (transformation), чтобы получился более естественный объект, или имитировать его перемещение в
пространстве. Для этого координаты вершин граней объекта (vertex —
вертекс) пересчитывают с использованием операций матричной алгебры и
геометрических преобразований. В современных видеокартах для этого
интенсивно используется геометрический сопроцессор, а в более старых этим
должен заниматься центральный процессор;
расчет освещенности и затенения — для того чтобы объект был виден
на экране, нужно рассчитать освещенность (lighting) и затенение (shading)
каждого элементарного прямоугольника или треугольника. Причем необходимо имитировать реальное распределение освещенности, т. е. требуется
скрыть изменения освещенности между прямоугольниками или треугольниками. Для этого используют различные методы интерполяции,
например, Гуро (Gouraud Shading) или Фонга (Phong Shading);
проецирование— трехмерный объект преобразуется в двумерный, но
при этом запоминаются расстояния вершин граней до поверхности экрана
(координата Z, Z-буфер), на который проецируется объект;
обработка координат вершин— на этапах моделирования объекта все
координаты вершин граней получаются в виде чисел с плавающей запятой,
но поскольку в видеопамять возможно занести только целые числа, то
необходимо осуществить этап преобразования. На этом же этапе допускается
проводить сортировку вершин, чтобы отбросить невидимые грани. При
расчетах используется субпиксельная коррекция, когда каждый пиксел
представляется в виде матрицы субпикселов, например размера 3x3, 4x4 и т.
д., с которой проводятся вычисления (т. е. одна точка преобразуется в 9, 16
или большее число субпикселов);
удаление скрытых поверхностей — из двумерной проекции
трехмерного объекта удаляются все невидимые поверхности. Этот процесс
обычно проводится в несколько стадий на разных этапах ЗО-конвейера;
наложение текстур — т. к. возможности процессора видеокарты не
бесконечны, поверхность объекта моделируется с помощью ограниченного
количества прямоугольников или треугольников, поэтому, чтобы создать
реалистичное изображение, на каждую элементарную поверхность
накладывают текстуру (texture), имитирующую реальную поверхность.
Текстуры хранятся в памяти в виде растровых картинок. Минимальный
элемент растровой картинки носит название тексел (texel — texture Wement).
Этап наложения текстур наиболее трудоемок и сложен, причем здесь
возникает множество проблем с совмещением краев текстур соседних
плоскостей. Кроме того, при масштабировании изображения имеет место
проблема согласования величины разрешения используемой текстуры с
разрешением монитора, т. к. при использовании текстуры с малым
разрешением изображение на экране получается в виде набора цветных
квадратиков, а при использовании текстур с большим разрешением может не
хватить памяти для их хранения;
создание эффектов прозрачности и полупрозрачности — на этом этапе
проводится коррекция цвета пикселов (альфа-смешение — alpha-blending,
затуманивание— fogging) с учетом прозрачности смоделированных объектов
и учитывая свойства окружающей объекты среды;
коррекция дефектов — смоделированные линии и границы объектов,
если они не вертикальны или горизонтальны, на экране выглядят
угловатыми, поэтому проводят коррекцию изображения, называемую
антиачиасин,' (anti-aliasing);
интерполяция недостающих цветов — если при моделировании
объектов использовалось другое количество цветов, нежели чем в текущем
режиме видеокарты, то необходимо рассчитать недостающие цвета или
удалить избыточные. Этот процесс называется дизеринг (dithering).
После расчета всех точек кадра информация о каждом пикселе
перемещается в видеопамять.
Графические API
До выхода операционной системы Windows Visla и внедрения
интерфейса графического программирования (Application Programming
Interface, API) версии DirectX К) подробно говорить о программах по ЗОграфике в книге о "железе" было не обязательно. Эта тема ранее была более
интересна геймерам, которым хотелось иметь самую реалистическую карту
виртуального мира. Ныне. увы. все изменилось. ОС Windows Vista
потребовала настолько много ресурсов от всех узлов компьютера, что
следует вкратце познакомиться, а что и зачем нужно.
Как уже говорилось, само по себе "железо" ничего не может делать,
поэтому всегда нужна программа-посредник, которая умеет обращаться с
конкретной моделью того или иного устройства. Вот и для видеокарт нужен
посредник, который превращает инструкции программиста в изображение на
экране (писать программы на уровне машинных кодов очень сложно,
утомительно и долго). Вначале каждый производитель видеокарт предлагал
свой вариант набора инструкций (способов обращения к видеопроцессору),
что являлось очень неудачным и дорогим решением. В дальнейшем
появилось два стандарта, которые в настоящее время и определяют как
разработку нового "железа", так и написание игр (да и других программ с
"крутой" графикой).
Сегодня существуют два общепринятых варианта графических API:
OpenGL — международный открытый стандарт, где GL расшифровывается
как Graphics Library (графическая библиотека), и Microsoft DirectX,
привязанный к операционной системе Windows. Правда, кроме графических
функций DirectX описывает дополнительно интерфейсы звука и вводавывода.
Стандарт OpenGL более консервативен, но более надежен, так как
является коллективным трудом многих организаций. Microsoft DirectX очень
быстро обновляется, и. как это повелось, часто появляются различные
недокументированные функции или обновления без смены номера версии,
соответственно, возникают различные коллизии, когда две видеокарты,
например поддерживающих DirectX 9. могут работать по-разному, так как
одна умеет работать с Pixel Shader 3.0. а вторая только с Pixel Shader 2.0.
По мере совершенствования графических процессоров и увеличения
объема памяти на видеокартах совершенствовались и API. В настоящее
время для получения более реалистичной графики внедряются варианты
DirectX 10. который позволяет создать довольно реальную картину
виртуального мира, но зато требует очень много ресурсов. Мы не будем
останавливаться на новинках в теории построения изображения, т. к. лучше
посмотреть результирующие рисунки на сайтах корпораций NVIDIA и AMD.
где на простых примерах показано, как изменяется одно и то же изображение
при смене того или иного стандарта или технологии. На обычной бумаге,
увы. все превращается в унылые графические построения.
DirectX — это набор API-функций, разработанных для решения задач,
связанных с игровым и видеопрограммированием под Microsoft Windows.
Наиболее широко используется при написании компьютерных игр. Пакет
средств разработки DirectX под Microsoft Windows бесплатно доступен на
сайте Microsoft. Зачастую обновленные версии DirectX поставляются вместе
с игровыми приложениями, так как DirectX API обновляется достаточно
часто, и версия, включённая в ОС Windows, обычно является далеко не самой
новой.
DirectX API
Практически все части DirectX API представляют собой наборы COMсовместимых объектов.
В целом, DirectX подразделяется на:
DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся
на:
DirectDraw: интерфейс вывода растровой графики. (Его разработка давно
прекращена)
Direct3D (D3D): интерфейс вывода трёхмерных примитивов.
DirectInput: интерфейс, используемый для обработки данных,
поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров.
DirectPlay: интерфейс сетевой коммуникации игр.
DirectSound: интерфейс низкоуровневой работы со звуком (формата
Wave)
DirectMusic: интерфейс воспроизведения музыки в форматах Microsoft.
DirectShow: интерфейс, используемый для ввода/вывода аудио и/или
видео данных.
DirectX Instruments —
технология,
позволяющая на
основе
мультимедийного API DirectX создавать и использовать программные
синтезаторы. В отличие от DX-плагинов, такие программы могут полностью
управляться по MIDI и служат главным образом не для обработки, а для
синтеза звука. Технология DXi была популярна в 2001—2004 гг., особенно в
программных продуктах Cakewalk, но со временем проиграла «войну
форматов» технологии VST от Steinberg.
DirectSetup: часть, ответственная за установку DirectX.
DirectX Media Objects: реализует функциональную поддержку
потоковых объектов (например, кодировщики/декодировщики)
Direct2D : интерфейс вывода двухмерной графики
История
Изначально нацеленный на разработку видеоигр, DirectX стал популярен
и в других областях разработки программного обеспечения. К примеру,
DirectX, наряду с OpenGL, получил очень широкое распространение в
инженерном/математическом ПО.
В 1994 году Microsoft была практически готова выпустить следующую
версию Windows — Windows 95. Главным фактором, определяющим,
насколько популярна будет новая ОС, являлся набор программ, которые
можно будет запускать под её управлением. В Microsoft пришли к выводу,
что, пока разработчики видят DOS более подходящей для написания игровых
приложений, коммерческий успех новой ОС весьма сомнителен.
DOS позволяла разработчику получить прямой доступ к видеокарте,
клавиатуре/мыши/джойстику и прочим частям системы, в то время как
Windows 95, с её защищённой моделью памяти, предоставляла более
стандартизованный, но в то же время весьма ограниченный доступ к
устройствам. Microsoft нуждалась в новом способе дать разработчику всё,
что ему необходимо. Айслер (Eisler), Сэйнт Джон (St. John), и Энгстром
(Engstrom) решили эту проблему, назвав само решение DirectX.
Первый релиз DirectX был выпущен в сентябре 1995 года, под названием
«Windows Game SDK».
Ещё до появления DirectX, Microsoft включила OpenGL в ОС Windows
NT. Direct3D позиционировался как замена OpenGL в игровой сфере. Отсюда
берёт своё начало «священная война» между сторонниками кроссплатформенной OpenGL и доступной лишь в Windows (в т.ч. Windows NT)
Direct3D. Так или иначе, остальные части DirectX очень часто
комбинируются с OpenGL в компьютерных играх, так как OpenGL как
таковой не подразумевает функциональность уровня DirectX (например,
доступ к клавиатуре/джойстику/мыши, поддержка звука, игры по сети
и т. д.).
DirectX является базой для Xbox API. Xbox API схож с DirectX 8.1, но
обновление версии, как и на других консолях того времени, невозможно.
В 2002 году Microsoft выпустила DirectX 9 с улучшенной и расширенной
поддержкой шейдеров. С 2002 года DirectX неоднократно обновлялся. В
августе 2004 года в DirectX была добавлена поддержка шейдеров версии 3.0
(DirectX 9.0c).
В апреле 2005 интерфейс DirectShow был перемещён в Microsoft Platform
SDK.
Хронология версий DirectX
Версия
DirectX
Логотип Номер версии
DirectX 1.0
4.02.0095
DirectX 2.0 /
2.0a
4.03.00.1096
DirectX 3.0 /
3.0a
4.04.0068 / 69
DirectX 4.0<
DirectX 5.0
не выпущен
4.05.00.0155
Операционная система
Windows 95a
Windows 95 OSR 2 и Windows NT
младше 4.0
Windows 95 OSR 2.5 и Windows NT
4.0 SP3
последняя поддерживаемая версия
DirectX для Windows NT 4.0
Доступен как бета для Windows NT
Дата
релиза
30
сентября
1995
5 июня
1996
15
сентября
1996
16 июля
DirectX 5.0
(RC55)
4.05.01.1721 /
1998
4.0
Windows 98
Windows 98 SE
последняя поддерживаемая версия
DirectX Media для Windows NT 4.0 а
также он был в Dreamcast
DirectX 6.0
4.06.00.0318
(RC3)
DirectX 6.1
4.06.02.0436
(RC0)
Windows 95/98/98SE
DirectX 7.0
4.07.00.0700
(RC1)
Windows 2000 и Windows ME
DirectX 7.0a
4.07.00.0716
(RC1)
Windows 95/98/98SE/2000
DirectX 8.0
4.08.00.0400
(RC10)
Windows 95/98/98SE/ME/2000
DirectX 8.0a
DirectX 8.1
DirectX 8.1b
DirectX 8.2
4.08.00.0400
Последняя поддерживаемая версия
(RC14)
DirectX для Windows 95
4.08.01.0810
4.08.01.0881
Windows XP
(RC7)
4.08.01.0901
4.08.02.0134
(4.09.0000.0134)
DirectX 9.0
4.09.0000.0900
DirectX 9.0a
4.09.0000.0901
DirectX 9.0b
4.09.0000.0902
(RC2)
DirectX 9.0c
4.09.0000.0904
(RC0)
DirectX 9.0c
4.09.0000.0904
DirectX 9.0L
(включен в
состав
Windows
Vista)
4.09.0000.0905
(?)
Windows Server 2003
Windows XP SP2
последняя поддерживаемая версия
DirectX для Windows 98SE и Windows
Me
Xbox 360
Совместим со всеми версиями ОС
Windows, с которыми совместим
9.0c(RC0)
Предоставляет дополнительные
интерфейсы IDirect3D9Ex и
IDirect3DDevice9Ex с
функциональностью, доступной лишь
через LDDM-драйвера ОС Windows
Vista.
1997
5 мая
1998
7 августа
1998
3
февраля
1999
22
сентября
1999
1999
30
сентября
2000
7 ноября
2000
12
ноября
2001
???, 2002
???, 2002
24
декабря
2002
26 марта
2003
13
августа
2003
9 августа
2004
9 декабря
2005
DirectX 10
(включен в
состав
Windows
Vista)
DirectX 10.1
DirectX 11
(включен в
состав
Windows 7)
6.0.6000.16386
Первая версия для Windows Vista.
Информация по Direct3D10
10
ноября
2006
6.00.6001.18000
Service Pack 1 для Windows Vista,
Windows Server 2008
4
февраля
2008
6.01.7600.16385
Windows Vista Service Pack 2,
Windows 7
Официальный анонс состоялся на
Gamefest 2008. Информация по
Direct3D11
22 июля
2009
Многие современные устройства имеют DirectX-совместимые драйвера,
иными словами, пользователь должен установить DirectX для использования
всех возможностей устройства. На данный момент система обновления
драйверов Windows Update позволяет загружать только необходимые
библиотеки, а не весь драйвер целиком.
DirectX обратно совместим с предыдущими версиями. Если
приложение/игра использует DirectX 6.0, оно будет работать и при
установленном DirectX 9.0. Но вышесказаное распространяется только на
версию DirectX ниже 10.0. Версия DirectX 10.0 несовместима со всеми
предыдущими, но совместима со всеми последующими.
Поддерживаемые операционные системы:
Windows 98, Windows 98 Second Edition;
Windows 2000, Windows 2000 Advanced Server, Windows 2000
Professional Edition, Windows 2000 Server, Windows 2000 Service Pack 2,
Windows 2000 Service Pack 3, Windows 2000 Service Pack 4;
Windows Server 2003, Windows Server 2003 Service Pack 1, Windows
Server 2003 Datacenter x64 Edition, Windows Server 2003 Enterprise x64 Edition,
Windows Server 2003 Standard x64 Edition, Windows Small Business Server
2003;
Windows XP, Windows XP 64-bit, Windows XP Home Edition, Windows XP
Media Center Edition, Windows XP Professional Edition, Windows XP Service
Pack 1, Windows XP Service Pack 2, Windows XP Service Pack 3, Windows XP
Starter Edition, Windows XP Tablet PC Edition;
Windows Vista.
Windows 7
Последней выпущенной версией является DirectX 11; до выпуска Service
Pack 1 на Windows Vista был установлен DirectX 10, изначально
называвшийся «Windows Graphics Foundation», позднее он был
переименован. Изменения в DirectX 10.1, в отличие от DirectX 10, касаются
графической составляющей — Direct3D. DirectX 10 представляет собой часть
ОС Windows Vista и использует отличную от DirectX 9.0 модель видеодрайвера. DirectX 10 выдвигает набор требований к аппаратной части —
минимальный стандарт функциональности, необходимой для того, чтобы
аппаратное устройство было DirectX-совместимым. В августе 2008 был
анонсирован DirectX 11. Были озвучены нововведения, которые войдут в
Direct3D11. Предварительная версия будет доступна в конце декабря с
обновлением DirectX SDK — будут доступны вся соответствующая
документация и примеры.
XNA — другой инструмент разработки от Microsoft, упрощающий
разработку игровых и мультимедиа-приложений, предоставляющий удобный
путь интеграции с DirectX, HLSL и др. инструментами, собранными в
единую систему. Последние 2 года компания Microsoft активно продвигает
этот инструмент как средство разработки приложений для Xbox 360, OpenGL
(Open Graphics Library — открытая графическая библиотека) —
спецификация, определяющая независимый от языка программирования
кросс-платформенный программный интерфейс для написания приложений,
использующих двумерную и трёхмерную компьютерную графику.
Включает более 250-ти функций для рисования сложных трёхмерных
сцен из простых примитивов. Используется при создании компьютерных игр,
САПР, виртуальной реальности, визуализации в научных исследованиях. На
платформе Windows конкурирует с Direct3D.
Спецификация
На базовом уровне OpenGL — это просто спецификация, то есть
документ, описывающий набор функций и их точное поведение.
Производители оборудования на основе этой спецификации создают
реализации — библиотеки функций, соответствующих набору функций
спецификации. Реализация использует возможности оборудования там, где
это возможно. Если аппаратура не позволяет реализовать какую-либо
возможность, она должна быть эмулирована программно. Производители
должны пройти специфические тесты (conformance tests — тесты на
соответствие) прежде чем реализация будет классифицирована как OpenGL
реализация. Таким образом, разработчикам программного обеспечения
достаточно научиться использовать функции, описанные в спецификации,
оставив эффективную реализацию последних разработчикам аппаратного
обеспечения.
Эффективные реализации OpenGL существуют для Windows, Unixплатформ, PlayStation 3 и Mac OS. Эти реализации обычно предоставляются
изготовителями видеоадаптеров и активно используют возможности
последних.
Существуют
также
чисто
программные
реализации
спецификации OpenGL, одной из которых является библиотека Mesa. Из
лицензионных соображений Mesa является «неофициальной» реализацией
OpenGL, хотя полностью с ней совместима на уровне кода.
Спецификация OpenGL пересматривается Консорциумом ARB
(Architecture Review Board), который был сформирован в 1992 году.
Консорциум состоит из компаний, заинтересованных в создании широко
распространённого и доступного API. Согласно официальному сайту
OpenGL, членами ARB с решающим голосом на ноябрь 2004 года являются
производители профессиональных графических аппаратных средств SGI,
3Dlabs, Matrox и Evans & Sutherland (военные приложения), производители
потребительских графических аппаратных средств ATI и NVIDIA,
производитель процессоров Intel, и изготовители компьютеров и
компьютерного оборудования IBM, Apple, Dell, Hewlett-Packard и Sun
Microsystems, а также один из лидеров компьютерной игровой индустрии id
Software. Microsoft, один из основоположников Консорциума, покинула его в
марте 2003 года. Помимо постоянных членов, каждый год приглашается
большое количество других компаний, становящихся частью OpenGL ARB в
течение одного года. Такое большое число компаний, вовлеченных в
разнообразный круг интересов, позволило OpenGL стать прикладным
интерфейсом широкого назначения с большим количеством возможностей.
Курт Экли (Kurt Akeley) и Марк Сигал (Mark Segal) являются авторами
оригинальной спецификации OpenGL. Крис Фрэзиер (Chris Frazier)
редактировал версию 1.1. Йон Лич (Jon Leech) редактировал версии с 1.2 по
версию 2.0.
Архитектура
OpenGL ориентируется на следующие две задачи:
Скрыть сложности адаптации различных 3D-ускорителей, предоставляя
разработчику единый API.
Скрыть различия в возможностях аппаратных платформ, требуя
реализации недостающей функциональности с помощью программной
эмуляции.
Основным принципом работы OpenGL является получение наборов
векторных графических примитивов в виде точек, линий и многоугольников
с последующей математической обработкой полученных данных и
построением растровой картинки на экране и/или в памяти. Векторные
трансформации и растеризация выполняются графическим конвейером
(graphics pipeline), который по сути представляет из себя дискретный
автомат. Абсолютное большинство команд OpenGL попадают в одну из двух
групп: либо они добавляют графические примитивы на вход в конвейер, либо
конфигурируют конвейер на различное исполнение трансформаций.
OpenGL является низкоуровневым процедурным API, что вынуждает
программиста диктовать точную последовательность шагов, чтобы построить
результирующую растровую графику (императивный подход). Это является
основным отличием от дескрипторных подходов, когда вся сцена передается
в виде структуры данных (чаще всего дерева), которое обрабатывается и
строится на экране. С одной стороны, императивный подход требует от
программиста глубокого знания законов трёхмерной графики и
математических моделей, с другой стороны — даёт свободу внедрения
различных инноваций.
Расширения
Стандарт OpenGL, с появлением новых технологий, позволяет
отдельным производителям добавлять в библиотеку функциональность через
механизм расширений. Расширения распространяются с помощью двух
составляющих: заголовочный файл, в котором находятся прототипы новых
функций и констант, а также драйвер устройства, поставляемого
разработчиком. Каждый производитель имеет аббревиатуру, которая
используется при именовании его новых функций и констант. Например,
компания NVIDIA имеет аббревиатуру NV, которая используется при
именовании ее новых функций, как, например, glCombinerParameterfvNV(), а
также констант, GL_NORMAL_MAP_NV. Может случиться так, что
определённое расширение могут реализовать несколько производителей. В
этом
случае
используется
аббревиатура
EXT,
например,
glDeleteRenderbuffersEXT. В случае же, когда расширение одобряется
Консорциумом ARB, оно приобретает аббревиатуру ARB и становится
стандартным
расширением.
Обычно,
расширения,
одобренные
Консорциумом ARB, включаются в одну из последующих спецификаций
OpenGL.
Список зарегистрированных расширений можно найти в официальной
базе расширений.[1]
Дополнительные библиотеки
Существует ряд библиотек, созданных поверх или в дополнение к
OpenGL. Например, библиотека GLU, являющаяся практически стандартным
дополнением OpenGL и всегда её сопровождающая, построена поверх
последней, то есть использует её функции для реализации своих
возможностей. Другие библиотеки, как, например, GLUT и SDL, созданы для
реализации возможностей, недоступных в OpenGL. К таким возможностям
относятся создание интерфейса пользователя (окна, кнопки, меню и др.),
настройка контекста рисования (область рисования, использующаяся
OpenGL), обработка сообщений от устройств ввода/вывода (клавиатура,
мышь и др.), а также работа с файлами. Обычно, каждый оконный менеджер
имеет собственную библиотеку-расширение для реализации вышеописанных
возможностей, например, WGL в Windows или GLX в X Window System,
однако библиотеки GLUT и SDL являются кросс-платформенными, что
облегчает перенос написанных приложений на другие платформы.
Библиотеки, как GLEW (The OpenGL Extension Wrangler Library) и GLEE
(The OpenGL Easy Extension library) созданы для облегчения работы с
расширениями и различными версиями OpenGL. Это особенно актуально для
программистов в Windows, так как, заголовочные и библиотечные файлы,
поставляемые с Visual Studio, находятся на уровне версии OpenGL 1.1.
OpenGL имеет только набор геометрических примитивов (точки, линии,
многоугольники) из которых создаются все трёхмерные объекты. Порой
подобный уровень детализации не всегда удобен при создании сцен. Поэтому
поверх OpenGL были созданы более высокоуровневые библиотеки, такие как
Open Inventor и VTK. Данные библиотеки позволяют оперировать более
сложными трёхмерными объектами, что облегчает и ускоряет создание
трёхмерной сцены.
GLM
(OpenGL
Mathematics) —
вспомогательная
библиотека,
предоставляющая программистам на C++ классы и функции для выполнения
математических операций. Библиотека может использоваться при создании
3D-программ с использованием OpenGL.[2] Одной из характеристик GLM
является то, что реализация основана на спецификации GLSL. Исходный код
GLM использует лицензию MIT.
[Независимость от языка программирования
Для подтверждения независимости от языка программирования были
разработаны различные варианты привязки (binding) функций OpenGL или
полностью перенесены на другие языки. Одним из примеров может служить
библиотека Java 3D, которая может использовать аппаратное ускорение
OpenGL. Прямая привязка функций реализована в Lightweight Java Game
Library[3], которая имеет прямую привязку OpenGL для Java. Sun также
выпустила версию Java OpenGL (JOGL), которая предоставляет прямую
привязку к Си-функциям OpenGL, в отличие от Java 3D, которая не имеет
столь низкоуровневой поддержки. Официальный сайт OpenGL имеет ссылки
на привязки для языков Java, Фортран 90, Perl, Pike, Python, Ada, Visual Basic
и Pascal.[4] Имеются также варианты привязки OpenGL для языков C++ и
C#.[5]
История
Компьютерная графика нашла широкое распространение и применение в
повседневной жизни. Учёные используют компьютерную графику для
анализа результатов моделирования. Инженеры и архитекторы используют
трёхмерную графику для создания виртуальных моделей. Кинематографисты
создают спецэффекты или полностью анимированные фильмы («Шрек»,
«История игрушек» и др.). В последние годы широкое распространение
получили также компьютерные игры, максимально использующие
трёхмерную графику для создания виртуальных миров.
Распространению компьютерной графики сопутствовали свои
трудности. В 1990-х разработка программного продукта, способного
работать на большом количестве графического оборудования, была
сопряжена с большими временны́ми и финансовыми затратами. Было
необходимо отдельно создавать модули для каждого типа графических
адаптеров, что порой приводило к размножению одинакового программного
кода. Это сильно тормозило развитие и распространение компьютерной
графики.
Silicon Graphics Incorporated (SGI) специализировалась на создании
высокотехнологического графического оборудования и программных
средств. Являясь в то время лидером в трёхмерной графике, SGI видела
проблемы и барьеры в росте рынка. Поэтому было принято решение
стандартизировать метод доступа к графической аппаратуре на уровне
программного интерфейса.
Таким образом появился программный интерфейс OpenGL, который
стандартизирует доступ к графической аппаратуре путём смещения
ответственности за создание аппаратного драйвера на производителя
графического устройства. Это позволило разработчикам программного
обеспечения использовать более высокий уровень абстракции от
графического оборудования, что значительно ускорило создание новых
программных продуктов и снизило на них затраты.
В 1992 году компания SGI возглавила OpenGL ARB — группу компаний
по разработке спецификации OpenGL. OpenGL эволюционировал из 3Dинтерфейса SGI — IRIS GL. Одним из ограничений IRIS GL было то, что он
позволял
использовать
только
возможности,
поддерживаемые
оборудованием; если возможность не была реализована аппаратно,
приложение не могло её использовать. OpenGL преодолевает эту проблему за
счёт программной реализации возможностей, не предоставляемых аппаратно,
что позволяет приложениям использовать этот интерфейс на относительно
маломощных системах.
Когда в 1995 году была выпущена библиотека Direct3D, Microsoft, SGI и
Hewlett-Packard начали проект под названием Fahrenheit, который
предусматривал создание более универсального программного интерфейса
на основе Direct3D и OpenGL. Идея казалась достаточно обещающей,
призванной навести порядок в области интерактивной трёхмерной графики,
однако, в результате финансовых трудностей в SGI и отсутствия должной
индустриальной поддержки, проект был закрыт. Правда, позже, 16 сентября
2005 года, он всё-таки был выпущен.
OpenGL 2.0
Говорили, что по сравнению с DirectX главной проблемой OpenGL
является Консорциум (который и должен заниматься развитием OpenGL), в
который входит большое количество компаний с различными интересами,
что приводит к длительному периоду принятия новой версии спецификации.
OpenGL версии 2.0 была представлена 3Dlabs в ответ на беспокойство
относительно медленного и нечёткого направления развития OpenGL. 3Dlabs
предложила ряд существенных дополнений к стандарту, наиболее значимым
из которого было добавление к ядру OpenGL шейдерного языка GLSL
(OpenGL Shading Language). Это позволяет программисту заменить
фиксированный конвейер OpenGL небольшими программами на
специальном языке для создания различных эффектов, таких, как bump
mapping, normal mapping, parallax mapping, HDR и т. д.
Однако, ещё до введения в стандарт OpenGL языка GLSL существовала
возможность разрабатывать спецэффекты на языках ассемблера (расширения
vertex_program, fragment_program) и Cg (NVidia C for Graphics). К
сожалению, многие предложенные возможности пока отсутствуют в версии
OpenGL 2.0[источник не указан 291 день], хотя некоторые из них
реализованы многими производителями в виде расширений.
OpenGL 3.1
24 марта 2009 года Khronos Group анонсировала OpenGL 3.1. В новой
версии произведена чистка компонентов, которые были объявлены
устаревшими, но оставались в OpenGL 3.0 для сглаживания перехода на
новую версию API (устаревшие компоненты возможно в дальнейшем
использовать через GL_ARB_compatibility extension). Кроме того, в OpenGL
3.1 добавлен ряд новшеств, таких как:
Поддержка OpenGL Shading Language версии 1.40 (GLSL).
CopyBuffer API для быстрого копирования данных; используется в
сочетании OpenCL.
Текстурные буферные объекты.
Uniform Buffer Objects.
Signed нормализованные текстуры.
Доступно минимум 16 текстурных единиц в vertex shader.
Primitive restart.
Instancing.
Для использования только OpenGL 3.1, нужно использовать gl3.h.
OpenGL 3.2
3 августа 2009 года Khronos Group анонсировала OpenGL 3.2. Новая
версия продолжает развитие стандарта OpenGL, чтобы дать разработчикам
графики кроссплатформенный доступ к передовой функциональности GPU.
Нововведения:
Поддержка OpenGL Shading Language версии 1.50 (GLSL).
Порядок
вершинных
компонентов
BGRA
(GL_ARB_vertex_array_bgra) — теперь в шейдере можно читать 4компонентные вершинные атрибуты в формате BGRA.
Команды отрисовки теперь позволяют модификацию базового индекса
вершины (GL_ARB_draw_elements_base_vertex) — теперь легко можно
использовать один набор вершинных буферов (для координат и прочих
атрибутов) для хранения множества мешей (меньше переключений
буферов — быстрее рендеринг).
Настройка координатного соглашения фрагментных шейдеров
(GL_ARB_fragment_coord_conventions) —
для
облегчения
написания
мультирендеров (с поддержкой OpenGL и DirectX).
Настройка «побуждающей» вершины (GL_ARB_provoking_vertex) —
для тех же целей.
Бесшовное
фильтрование
кубических
карт
(GL_ARB_seamless_cube_map).
Текстуры с мультивыборкой и текстурные семплеры для заданных
областей выборки (GL_ARB_texture_multisample).
Управление
отсечением
фрагментов
по
глубине
(GL_ARB_depth_clamp) — для теней и прочего.
Геометрические шейдеры (GL_ARB_geometry_shader4).
Fence sync objects (GL_ARB_sync) — контроль загрузки в буферы.
Характеристики современных
видеокарт
Возможности современных видеокарт, когда речь не идет о текстовых
режимах работы, поражают воображение. Практически, на компьютере
сегодня можно математически создать модель человека, которую будет
трудно отличить от настоящей фотографии. Но ничего не дается бесплатно,
поэтому процессор и видеопамять на борту видеокарты должны иметь очень
и очень серьезные технические характеристики.
Желаемый объем видеопамяти был обсужден ранее, но кроме ее объема
имеется еще два параметра, которые в настоящее время определяют
возможности видеокарты, влияющие на качество построения изображения и
скорость обновления картинки.
Первый и наиболее важный параметр — это ширина шины видеопамяти,
или сколько бит за один раз (цикл) передается по шине видеопроцессорвидеопамять. (Причем речь не идег об оперативной намят, расположенной на
системной плате, так как подобные решения малопроизводительны и в
настоящее время для внешних видеокарт практически не используются.) Если первые видеопроцессоры (видеокарты) довольствовались стандартными 8.
16 и 32 битами, то для соответствия современному уровню ширина шины
видеопамяти должна быть примерно следующей:
 бюджетные и офисные варианты — 64 или 128 бит;
 игровые среднего уровня — 128 или 256 бит;
 категории High-End — от 512 бит и выше.
Но не следует только смотреть на данный параметр при покупке новой
видеокарты. Увы, все характеристики видеокарты должны соответствовать
друг другу. Например, на хорошей видеокарте должен быть
высокопроизводительный графический процессор, достаточный объем
видеопамяти, большая ширина шины видеопамяти, высокие тактовые
частоты видеопроцессора и видеопамяти. Выбирать на основе только одного
параметра— большая ошибка.
В частности, должно быть оптимальное сочетание частот
видеопроцессора/видеопамяти, а также ширины видеопамяти. В качестве
мерила данного сочетания чаше всего используют FPS — количество кадров
в секунду, измеренную в какой-либо игре, например Quake 4.
Как правило, все крупные компании-производители видеокарт
предлагают покупателям оптимальные варианты в соответствующем
ценовом диапазоне.
В современных высокопроизводительных видеокартах используется
динамическая память стандартов GDDR3, GDDR4 и GDDR5. Причем память
GDDR4, только появившись, уже уступает место GDDR5. Заметим, что все
эти стандарты не имеют отношения к оперативной памяти компьютера. В
частности, для видеопамяти допускаются единичные ошибки в хранении
данных, т. к. случайный сбой в работе видеопамяти влияет только на один
кадр изображения, что не критично а большинстве случаев.
Мультимониторные системы
Пока не появилась шина PCI, персональный компьютер мог полноценно
работать только с одной видеокартой, выводя изображение на один монитор,
тогда как вторая видеокарта на шине ISA могла параллельно работать только
в текстовом режиме. Шина PCI позволила устанавливать в системе произвольное число видеокарт. Учитывая это, начиная с Windows 98, корпорация
Microsoft стала разрабатывать программное обеспечение с поддержкой
мультичониторных систем.
При установке в персональный компьютер двух видеокарт или одной
видеокарты с двумя видеовыходами можно организовать более удобную
работу с рядом приложений — чаще всего подобная возможность требуется
при работе с графическими редакторами. В этом случае, скажем, на
первичном мониторе (на него выводится информация BIOS при старте
компьютера) осуществляется редактирование изображения, а на вторичном
мониторе располагаются окна, используемые в работе палитр. Но можно
применить второй монитор и для дублирования изображения. Кроме того, в
системе может быть установлено до 9 видеокарт, что позволяет, например,
растянуть одно окно Windows на все мониторы для создания видеостенки.
Мониторы
разрешается
группировать
любым
образом.
Пример
использования мультимониторных систем показан на рис. 10.5.
Как правило, все современные видеокарты PCI Express (не низшей
ценовой категории) позволяют подключать до двух мониторов. Для
подключения большего количества мониторов желательно иметь системную
плату с двумя слотами PCI Express х 16. В тех случаях, когда нет
возможности установить внутрь компьютера вторую видеокарту, можно
использовать специальные видеокарты для построения видеостенок. Такая
видеокарта может быть выполнена как в виде платы для слотов PCI Express
или PCI, так и в виде внешнего блока. Правда, цена подобных решений
высока.
Технологии SLI и CrossFire
Неким зеркальным отражением мультимониторных систем является
случай, когда две видеокарты работают на один монитор. В частности,
корпорация NVIDIA предложила технологию SLI (Scalable Link Interface —
масштабируемый интерфейс соединений), когда два видеопроцессора
(видеокарты) по-братски делят построение картинки на экране монитора; а
корпорация AMD — аналогичную технологию CrossFire.
Для использования технологии SLI на системную плату с двумя
разъемами PCI Express допустимо установить две видеокарты на базе
NVIDIA. Соединенные через разъем NVIDIA SLI, обе карты работают с
одним монитором, обеспечивая повышенную производительность за счет
перераспределения
вычислительной
нагрузки
между
двумя
видеопроцессорами. Пример использования данной технологии показан на
рис.
. Необходимое оборудование:
MB с двумя и более раъемами PCI-X с поддержкой SLI
Блок питания min 550W (Рекомендуется SLI-ready)
Видеокарты GeForce 6/7/8/9, GT200/300 или Quadro FX с шиной PCI-X
Мост, объединяющий видеокарты
Обе графические карты должны принадлежать к одному классу
производительности, то есть можно объединять только две карты GeForce
6800 Ultra, две GeForce 6800 GT или две GeForce 6800 (стандарт). Смесь
различных видеокарт работать не будет, хотя в теории должна бы — ведь
здесь используется балансировка нагрузки.
Кроме того, до недавнего времени требовалось (сейчас такого жесткого
условия нет), чтобы объединяемые по технологии SLI видеокарты имели
одну и ту же версию BIOS.
Технология NVIDIA SLI предлагает два режима работы для увеличения
производительности: Split Frame Rendering (SFR) и Alternate Frame Rendering
(AFR). Режим AFR — это поочередный рендеринг кадров, то есть одна
видеокарта отвечает за рендеринг одного кадра, а вторая — за рендеринг
другого.
В режиме SFR одна видеокарта отвечает за обработку верхней половины
сцены кадра, а вторая — за обработку нижней половины. Кроме того,
разделение кадра на верхнюю и нижнюю половины не ограничено
соотношением 50/50, а является гибким. Используя технику динамической
балансировки нагрузки, нагрузка между видеокартами делится пополам,
позволяя каждой из них работать в полную силу. Вполне очевидно, что
технология балансировки нагрузки необходима и эффективна, поскольку в
большинстве игр нижняя часть сцены обычно имеет высокую сложность с
множеством деталей, а верхняя половина чаще всего отображает только
статическое небо.
Технология ATI Cross Fire
Альтернативная технология, позволяющая объединять две видеокарты
для
увеличения
производительности,
получила
название
ATI
CrossFire.(Технология Cross Fire была представлена 27 сентября 2005 года.)
По сравнению с технологией NVIDIA SLI у ATI CrossFire имеется ряд
принципиальных отличий и преимуществ. Напомним, что технология
NVIDIA SLI имеет несколько ограничений: обе карты должны быть
абсолютно идентичны или, другими словами, обладать одним и тем же BIOS
(правда, требование идентичных BIOS было только в первых реализациях
технологии NVIDIA SLI). Кроме того, режим SLI работает далеко не со
всеми играми, а если и работает, то в ряде случаев не дает желаемого
прироста производительности. К тому же эффективность технологии
NVIDIA SLI и список поддерживаемых ею игр в значительной мере зависят
от используемого видеодрайвера.
Технология ATI CrossFire работает со всеми играми под DirectX и
OpenGL. Объединяемые видеокарты не обязательно должны быть
одинаковыми и могут быть произведены разными компаниями. Технология
ATI CrossFire подразумевает больше режимов рендеринга, чем NVIDIA SLI,
и поддерживает режим улучшения качества изображения.
На первый взгляд, CrossFire имеет немало общего с NVIDIA SLI: для
работы CrossFire требуется материнская плата с двумя слотами PCI Express
х16 под графику. Хотя CrossFire теоретически не зависит от чипсета, ATI
утверждает, что система будет работать только на материнских платах с
чипсетом Radeon Xpress 200 CrossFire.
CrossFire-версия несколько отличается от обычных карт ATI. Для сборки
системы CrossFire, кроме стандартной графической карты Radeon Х800 или
Х850 (ведомая/slave), потребуется специальная версия видеокарты Radeon
Х800 или Х850 CrossFire (ведущая/master). При этом видеокарты не
соединяются между собой мостиком — только специальным внешним
кабелем.
Специальный чип на ведущей CrossFire-карте смешивает картинки,
сгенерированные обычной и CrossFire-картой, после чего выводит
изображение на дисплей. Смешивание происходит попиксельно.
Разделение на простую и CrossFire-версию карт, на первый взгляд,
можно расценить как недостаток по сравнению со SLI, так как в случае с
решением NVIDIA вам не нужно думать, какую карту брать, — обе
одинаковые. Но-если вдуматься, концепция ATI дает определенные
преимущества.
Владельцы Radeon Х800 или Х850 могут без проблем докупить к своей
системе любую модель CrossFire. Здесь не играют роли ни различия в
тактовых частотах, ни в версиях BIOS, ни в конфигурации конвейера, ни в
производителях. Единственное ограничение модель CrossFire должна
соответствовать другой графической карте. Другими словами, быть картой
Х800 или Х850.
CrossFire-версия карты координирует тактовые частоты и адаптируется к
обычной карте на основе пиксельных конвейеров. Скажем, если обычная
карта использует 12 активных пиксельных конвейеров, то CrossFire-карта
тоже перейдет на 12 конвейеров. Но за гибкость приходится платить.
Владельцы младшей Х800 или Х850 заплатят достаточно приличную сумму
за CrossFire-версию карты по сравнению со своей, и не факт, что они получат
большой выигрыш, ведь темп гонки будет задавать обычная карта.
Технология ATI CrossFire обеспечивает четыре режима работы:
SuperTiling;
Scissor;
Alternativ Frame Rendering (AFR)
Super AA.
На рис. приведен вариант, когда на системную плату устанавливаются
две идеокарты. Для примера, на рис. 10.7 показана блок-схема работы
технологии CrossFire.
Интерфейсы видеокарт
В настоящее время для подключения мониторов используют три типа
интерфейса: аналоговый VGA (Video Graphics Array) и два цифровых — DVII (Digital Video Interactive) и HDMI (High Definition Multimedia Interface).
Ha электронно-лучевых мониторах устанавливается только аналоговый
видеоинтерфейс. Разводка стандартного VGA-разъема приведена на рис.
10.11.
Производители видеокарт и графических процессоров
Пока персональные компьютеры были по теперешним меркам
слабенькими и от видеокарты не требовалось фотореалистичной графики,
производством видеокарт занималось множество компаний. В частности,
следует вспомнить знаменитые карты типа S3, которые стояли во многих
персонал) мх компьютерах в России. Но усложнение графических задач,
необходимость использовать мощный графический процессор, а также
требование разрабатывать оригинальные технологии формирования
трехмерного изображения сократили число разработчиков и производителей
до ничтожного количества, чуть большего, чем в области разработки
процессоров семейства х86. Фактически теперь имеет смысл говорить только
о двух компаниях, производящих графические процессоры:
NVIDIA Corporation http://www.nvidia.ru
AMD (ранее, чипсеты ATI) —http://www.amd.ru
Эти две компании настолько сильно обогнали в развитии своих
конкурентов, что их положение на рынке видеочипов практически такое, как
у Intel и AMD на рынке процессоров. Поэтому основные сражения в области
совершенствования вывода изображения на экран монитора происходят
между двумя этими игроками. В частности, смена поколений и архитектур
графических процессоров этих двух фирм происходит так часто, что новые,
более революционные решения, могут появляться через 6, а то и 3 месяца.
Среди производителей видеокарт на базе чипсетов NVIDIA и AMD в
России популярны следующие компании, как это указано в списке названий
брендов, отсортированных примерно в порядке популярности:










ASUS — http://www.asuscom.ru;
Sapphire — http://www.sapphiretech.com;
Gigabyle — http://www.gigabyte.ru;
MSI (Microslar) — http://www.microstar.ni;
Pali! — http://www.palit.biz;
Hightech — http://www.hisdigital.com;
PowerColor ■—- http://www.powercolor.com;
XFX — http://www.xfxforce.com.
Zotac — http://www.zotac.com;
Leadiek — http://www.lcadtek.com.tw; П Chainicch — http://www.ehaintech.ru.
Так как сегодня обострилась борьба за рынок графических процессоров
и решений на их основе, то рекомендуется приобретать новую видеокарту со
следующих позиций. Оптимальный вариант — это средняя ценовая
категория, при условии, что видеокарта выпускается уже не менее трех
месяцев, но, в то же время, должен присутствовать графический процессор,
выпущенный после появления Windows Vista. Поясним. В слишком новом
продукте, увы, могут проявиться проблемы, которые были не замечены на
стадии производства и тестирования, а слишком старые графические
процессоры — 'не поддерживают решения Windows Vista. Кроме того, для
"суперновинок" может не найтись драйверов для операционных систем,
кроме как для Windows Vista и Windows 7 (в частности, старые ОС Windows
98/МЕ уже перестали поддерживаться производителями).
Примечание
При покупке высокопроизводительной видеокарты обязательно надо
уточнить необходимую мощность блока питания. Не следует забывать, что
наиболее популярные блоки питания мощностью 350—450 Вт не могут
обеспечить необходимый ток для питания экстремальных решений. Кроме
того, следует озаботиться наличием в комплекте видеокарты переходников
для цепей +12 В дополнительного питания графического процессора.
Внимание!
Видеокарты, предназначенные дпя работы в режиме PCI-E 16х, могут
быть не совместимы с системными платами, которые работают в режиме
PCI-E 4/8х.
NVIDIA
В 1993 году Джен-Хсун Хуан, Кёртис Прим и Крис Малаковски
основали компанию
1995 год – первый процессор NV1
1998 год – переезд в Санта-Клару
1999 год - Quadro
2000 год Nvidia купила 3dfx
2004 год – 3 миллионый чип
2005 год Nvidia купил ULI Electronics
2007 год Nvidia – компания года
2008 год Nvidia покупает Ageia Technologies
Лето 2008 Nvidia анонсировала новую концепцию чипсетов: Tegra
На сегодняшний день Nvidia производит графические процессоры,
чипсеты для материнских плат, процессоры для беспроводных средств связи,
софт для цифровых медиаплэйеров.
Компании производящие видеокарты на базе чипсетов Nvidia: BFG,
EVGA, Foxconn, PNY, XFX, ASUS, Gigabyte, MSI
Линейка графических чипсетов
NV1 – первый процессор
RIVA 128 и RIVA 128ZX – Поддержка DirectX 5, OpenGL 1
RIVA TNT, RIVA TNT2 – Поддержка DirectX 6, поддержка OpenGL,
процессор, сделавший Nvidia лидером рынка
Nvidia GeForce – Решения для домашних ПК
Nvidia Quadro – Решения для профессиональных рабочих станций
Nvidia Tesla – Высокопроизводительные чипсеты для суперкомпьютеров
Nvidia GoForce – Процессоры для смартфонов, телефонов, PDA
Xbox GeForce 3 – первая видеокарта для консоли
PlayStation 3 - RSX 'Reality Synthesizer‘ – видеокарта для PS3 схожа с
GeForce 7800
Продукция компаний, производящие видеокарты на базе чипсетов Nvidia
незначительно отличается между собой. Это объясняется тем, что
видеокарты построены на одних и тех же графических процессорах. Более
того, если речь заходит о старших (наиболее производительных) моделях, то
зачастую они как две капли воды похожи друг на друга и в точности
повторяют так называемый референсный (предложенный разработчиком
графического процессора) дизайн.
Поэтому для того, чтобы получить представление о присутствующей на
рынке продукции, нет смысла рассматривать видеокарты различных
производителей. Вполне достаточно рассмотреть особенности графических
процессоров и рефе-ренсных видеокарт, построенных на них. Чтобы
избежать путаницы в названии референсных видеокарт, в дальнейшем мы
будем именовать их по названию используемого графического процессора.
В обзоре будут рассмотрены видеокарты, выходящие под брендом
GeForce. Они предназначены для видеоигр и домашних медиацентров. Для
профессиональной работы с графикой NVIDIA выпускает другую линейку
видеокарт под брендом Quadro. Как правило, они построены на тех же чипах,
что и игровые варианты.
Графические процессоры NVIDIA линейки G7x
Середина лета 2005 года стала новой вехой в истории компании NVIDIA
- был выпущен графический процессор нового поколения G70. Но, несмотря
новое кодовое название чипа, его архитектуру нельзя считать принципиально
новой - он является очередным этапом эволюции хорошо знакомой всем нам
архитектуры семейства NV4x (о чем свидетельствует первоначальное
кодовое обозначение чипа - NV47).
Плюс к этому, NVIDIA не стала рисковать и выпустила его по хорошо
отработанному 110-нм техпроцессу TSMC, поэтому нет ничего
удивительного в том, что видеокарты семейства GF7800GTX стали доступны
в массовых количествах сразу после анонса.
Основным новшеством G70, базирующемся на все том же наборе
шейдеров Shader Model 3.0 (SM 3.0), стало увеличение до 24 (или, по
терминологии NVIDIA, до 6 процессоров квадов) числа слегка улучшенных,
по сравнению с NV4x, пиксельных процессоров, а вершинных - до 8, объем
адресуемой памяти типа GDDR3 может достигать 1 Гбайт. Кроме того, была
осуществлена оптимизация питания и энергопотребления, благодаря чему
типовое потребление видеокарты GeForce 7800 GTX не превышает 110 Ватт,
то есть осталось на уровне GeForce 6800 Ultra, несмотря на 30% увеличение
числа транзисторов. В G70 появилась аппаратная поддержка ряда
потенциальных "хитов" ближайшего будущего: воспроизведение видео в
формате HDTV, а также поддержка важных специальных возможностей
графической драйверной модели Windows Vista. Кроме High-End видеокарты
GeForce 7800 GTX (430/1200 МГц), процессор G70 устанавливается и в его
чуть более скромном собрате - GeForce 7800 GT, отличающимся от GTX не
только пониженными (до 400/1000 МГц) частотами, но и урезанным числом
конвейеров (20 пиксельных и 7 вершинных) рендеринга, что обеспечивает
ему место (по показателям производительности) где-то посередине между
GeForce 7800 GTX и GeForce 6800 Ultra.
Очередными новыми чипами NVIDIA должны стать G72 и G74
(официальные названия GeForce 7600 и GeForce 7200), которые следует
ожидать в феврале-марте 2006 года. Они, скорее всего, будут урезанными
версиями базового G70, и станут первыми графическими чипами NVIDIA,
выпускаемыми по 0,09 мкм технологии. Они должны заменить NV43 и NV44
в Mainstream- и Low-End секторах соответственно. Таким образом, в
ближайшие полгода NVIDIA собирается полностью заменить все чипы NV4x
на новинки из линейки G7x. Кроме того, NVIDIA в начале 2006 года
планирует представить чип G71, являющийся 0,09 мкм версией G70 с
меньшей площадью кристалла и пониженным энергопотреблением.
Семейство NVIDIA GeForce 8
Революционные изменения в восьмом поколение видеокарт по
сравнению с предыдущим, седьмым, обусловлены выходом новой
операционной системы Windows Vista от Microsoft с принципиально новым
интерфейсом WGF 2.0 (Windows Graphics Foundation), известным также как
DirectX 10 API.
В связи с этим архитектура нового графического процессора претерпела
существенные изменения. Чтобы понять, насколько мощной спроектировали
новую систему, достаточно взглянуть на одну цифру — количество
транзисторов. В G80 их 681 млн. Это больше, чем в самых современных
процессорах Intel. К примеру, Intel Core 2 Е6850 состоит всего из 291 млн
полупроводниковых элементов, а самый производительный Intel Core 2
Extreme QX6850 — из 582 млн.
Такая сложная структура G80 в совокупности с 90-нанометровым
техпроцессом ведет к увеличению энергопотребления. В зависимости от
модификации топовые видеокарты восьмого поколения потребляют от 108 до
175 Вт энергии, что катастрофически много в свете борьбы AMD и Intel за
повышение энергоэффективности центральных процессоров.
Производимые по 65-нанометровому техпроцессу процессоры
архитектуры G92 (также относятся к восьмой серии) выигрывают у G80 по
энергоэффективности, однако в абсолютных цифрах TDP по-прежнему
остается довольно высоким — около 130 Вт.
Новое поколение графических процессоров имеет принципиально новую
архитектуру, основанную на унифицированных потоковых процессорах
(шейдерные процессоры). Если в графических процессорах предыдущего
поколения отдельно выделяли пиксельные и вершинные процессоры,
которые называли также конвейерами, то в новой архитектуре речь идет
именно об унифицированных шейдер-ных процессорах. Такие процессоры
способны выполнять не только вершинные
Производимые по 65-нанометровому техпроцессу процессоры
архитектуры G92 (также относятся к восьмой серии) выигрывают у G80 по
энергоэффективности, однако в абсолютных цифрах TDP по-прежнему
остается довольно высоким — около 130 Вт.
Новое поколение графических процессоров имеет принципиально новую
архитектуру, основанную на унифицированных потоковых процессорах
(шейдерные процессоры). Если в графических процессорах предыдущего
поколения отдельно выделяли пиксельные и вершинные процессоры,
которые называли также конвейерами, то в новой архитектуре речь идет
именно об унифицированных шейдерных процессорах.
Семейство NVIDIA GeForce G200
На эту серию GeForce G200NVIDIA возлагала большие надежды. При
ее разработке за основу были взяты принципы, положенные в основу
зарекомендовавших себя архитектур G8x и G9x. Необходимо было улучшить
производительность при выполнении длинных шейдеров, а также увеличить
количество параллельно выполняемых операций, с чем инженеры довольно
успешно справились.
Кроме того, была изменена маркировка изделий. Компания
отказалась от четырехзначных цифровых индексов в пользу
трехзначных.
Первоначально были представлены два адаптера — GTX 280 и GTX 260,
после линейка расширилась за счет GXT 260 (216) (см табл.).
Параметры
GeForce GTX
280
GT200
602
65
GeForce GTX 260
(216)
GT200
576
65
1400
1242
1400
1296
1400
1296
10
9
64
80
72
192
240
216
со
Кодовое имя процессора
Частота работы процессора,
МГц
Технологический процесс
изготовления, нм
Количество транзисторов, млн
Тактовая частота
универсальных потоковых
процессоров,потоковых
МГц
Количество
процессоров
Количество текстурных
модулей (TMU)
Количество универсальных
блоков (ALU)
Процессор
GeForce GTX
260
GT200
576
65
Ключевые пользовательские технологии и краткие технические
характеристики графических процессоров GeForce серии 200 приведены в
табл. 10,4, a GeForce серии 100 в табл. 10.5. Характеристики серий
видеопроцессоров NVIDIA GeForce 9XXX приведены в табл. 10.6, a NVIDIA
GeForce 8XXX приведены в табл. 10.7.
AMD -ATI
Корпорация AMD (ATI) — второй основной "игрок" на рынке
производства графических чипсетов и видеокарт. Ее видеокарты RADEON
составляют хорошую конкуренцию продукции NVIDIA.
Примечание
С 2006 г. компания ATI принадлежит корпорации AMD.
Для новых видеокарт корпорация AMD придумала новую систему
маркировки, т. к. старая с суффиксами XT, PRO и т. д. была излишне
запутанна. По новой маркировке первая цифра обозначает поколение, вторая
— семейство, а две последние— номер модели в семействе (думается, зто не
последние изобретения в области маркировки продукции).
При изучении документации следует помнить, что названия
аналогичных технологий 3D-конвейера у компании AMD-ATI и NVIDIA
разные.
Следует отметить, что есть много компаний, которые выпускают самые
разнообразные видеокарты на чипсетах RADEON— от полных аналогов
видеокарт AMD-ATI и до достаточно оригинальных конструкций. При покупке видеокарты с чипсетом от AMD-ATI надо обращать внимание на то.
что видеокарты, промаркированные как оригинальная продукция компании
AMD-ATI, но собранные с использованием бракованных или неподходящих
компонентов, в частности, с использованием устаревших микросхем памяти,
могут показать совсем не те результаты по производительности и т. д. В ряде
случаев под видом дорогих плат продаются их дешевые варианты,
соответственно производительность видеокарты будет далека от фирменного
аналога. На базе одних и тех же чипсетов RADEON можно собрать несколько
вариантов сильно отличающихся по производительности видеокарт.
На конец 2009 г. корпорация AMD предлагает следующие < процессоров
для настольных ПК:
□ ATI Radeon HD 5800 и ATI Radeon HD 5700 О ATI Radeon HD 4000
□ ATI Radeon HD 3000
□ ATI Radeon HD 2000
Для ноутбуков предназначены графические процессоры с
ATI Mobility Radeon HD 4000
□ ATI Mobility Radeon HD 3000
□ ATI Mobility Radeon HD 2000
□ ATI Mobility Radeon X1000
Характеристики серий видеопроцессоров ATI Radeon HD 4000
приведены в табл. 10.8, a ATI Radeon HD 5000 Premium в табл. 10.9.
Download