Смекни!
smekni.com

Технические средства информатизации (стр. 29 из 57)

9. Моделирование эффектов прозрачности и полупрозрачности заключается в том, что на основе информации о взаимной прозрачности объектов и среды выполняется коррекция цвета пикселов — так называемое альфа-смешение (Alpha-blending) и затуманивание (Fogging).

10. Коррекция дефектов изображения путем сглаживания антиалиасинг (Anti-aliasing). Антиалиасинг применяется для устранения дефектов изображения типа «лестничного» эффекта на наклонных линиях, муара. Различают краевой (Edge Anti-aliasing) иполный (Full-screen Anti-aliasingFSAA) антиалиасинг. В первых моделях игровых ускорителей использовался только краевой антиалиасинг, для современных 3D -акселераторов обязательным является полный антиалиасинг.

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

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

11. Интерполяция недостающих цветов — (Dithering) используется в том случае, когда в текущем видеорежиме 3D-акселератора для кодирования цвета пиксела используется менее 24 бит (например, в режиме High Color при 16-бит ном цвете).

12. Окончательное формирование кадрового буфера (Frame Buffer) — области памяти 3D -акселератора, в которую помешается спроецированное двухмерное изображение. Кадровый буфер используется для формирования выходного, аналогового видеосигнала 3D -ускорителя.

Рис. 4.22. «Виртуальное разрешение» при выполнении полного антиалиасинга

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

13. Постобработка (Post-processing) применяется в том случае, когда требуется реализовать какие-либо двухмерные эффекты над подготовленным кадром как единым целым.

Этапы 1 — 6 3D -конвейера образуют его геометрическую стадию, на которой выполняются интенсивные тригонометрические вычисления с помощью CPU. Однако существует тенденция обеспечения современных игровых 3D -акселераторов специальным процессором, обеспечивающим аппаратное ускорение выполнения геометрической стадии 3D -конвейера.

Этапы 7—13 3D -конвейера образуют стадию прорисовки объекта, или стадию рендеринга {Rendering — изображение, рисование, визуализация). На этой стадии все действия выполняются уже с растровыми объектами, состоящими из отдельных, дискретных элементов — пикселов и текселов. Выполняемые на стадии рендеринга операции не характерны для центрального процессора (как на геометрической стадии), поэтому именно на этом этапе конвейера необходимо аппаратное ускорение. Большинство современных 3D -ускорителей предназначено для рендеринга на аппаратном уровне и различается лишь числом реализуемых функций.

Программным интерфейсом для 3D -акселераторов служит так называемый интерфейс прикладного программирования (Appli-cation Program InterfaceAPI). API занимает промежуточное положение между высокоуровневыми прикладными программами и низкоуровневыми командами различных 3D-акселераторов и обеспечивает эффективное преобразование запросов прикладной программы в оптимизированную последовательность низкоуровневых команд. Благодаря API, разработчики прикладных программ избавлены от необходимости работать с низкоуровневыми командами акселератора.

В настоящее время существуют несколько платформ API, отличающихся областями применения.

DirectX разработана фирмой Microsoft, используется в игровых приложениях, работающих под управлением операционной системы Windows 95/98, и включает в себя несколько узконаправленных API:

DirectDraw обеспечивает использование аппаратных средств ускорения обычной, двухмерной графики;

Direct3D отвечает за работу графической системы в режиме создания трехмерных изображений;

DirectInput обеспечивает аппаратно независимый ввод информации в ПК через клавиатуру, мышь и джойстик;

DirectPlay используется при совместной игре на нескольких компьютерах, объединенных в сеть или соединенных непосредственно, через параллельный или последовательный порты;

DirectSound управляет использованием ресурсов звуковой системы ПК.

В архитектуре Direct3D заложен принцип проверки функциональных возможностей установленного аппаратного обеспечения. В соответствии с этим принципом прикладная программа сначала запрашивает Direct3D-coвместимый драйвер об аппаратно поддерживаемых данным акселератором 3D-функциях, а затем в зависимости от ответа активизирует поддерживаемые функции. Это избавляет от необходимости производить ручную настройку.

DirectX является жестко регламентированным, закрытым стандартом, который не допускает изменений до выхода в свет своей новой версии.

Open GL используется в основном в профессиональных приложениях (CAD, системы трехмерного моделирования, симуляторы и т.п.), работающих под управлением операционной системы Windows NT. Вместе с тем существуют и игры, ориентированные на OpenGL, например Quake.

API OpenGL построен на основе концепции открытого стандарта, имеющего небольшой базовый набор функций и множество расширений, реализующих более сложные функции. Производитель Chipset карты 3D -акселератора обязан создать BIOS и драйверы, выполняющие базовые функции OpenGL, но не обязан обеспечивать поддержку всех расширений. В результате возникают проблемы, связанные с написанием производителями драйверов для своих изделий, которые поставляются как в полном, так и в усеченном виде.

К числу OpenGL-совместимых драйверов относятся следующие:

ICD (Installable Client Driverдрайвер приложения-клиента) обеспечивает максимальное быстродействие, поскольку содержит низкоуровневые коды, обеспечивающие поддержку не только базового набора функций, но и его расширений.

MCD (Mini Client Driver) содержит оптимизированный код лишь для некоторых этапов 3D -конвейера, поэтому акселератор под его управлением работает медленнее.

Мини-порт — группа специализированных OpenGL-совместимых драйверов, каждый из которых специально разработан для работы с какой-либо одной программой или игрой. Такой мини-порт применяется, когда, например, возникает необходимость поиграть в QuakeGL или Quake II на ПК с Windows 95 и 3D-акселератором, не рассчитанным на использование OpenGL.

Раппер (Wrapper — устройство для оборачивания, завертывания, окутывания) — мини-порт, который может работать как ICD за счет перевода инструкций OpenGL в инструкции Direct3D, обеспечивая при этом самую низкую скорость работы по сравнению с драйверами других типов.

Game Engine — «игровой движок» — драйвер, разработанный для конкретной 3D-платы и обеспечивающий максимальную производительность за счет непосредственного использования низкоуровневых команд акселератора, без использования API.

Принципиальным отличием API OpenGL от DirectX является то, что OpenGL ориентирован на корректность создаваемых изображений, тогда как для DirectX важны скорость прорисовки и естественность изображения.

Кроме того, существуют Native API, создаваемые производителями 3D -акселераторов исключительно для своих Chipset с целью наиболее эффективного использования их возможностей.

Для настройки видеосистемы с целью обеспечения максимальной производительности при работе с трехмерной графикой пользователь ПК должен:

при выборе 3D -платы четко представить область ее будущего применения: игры или решение профессиональных задач;

установить в систему требуемый API;

проконтролировать настройку параметров драйвера и/или прикладной программы, задействовав необходимые функции 3D-aкселерации;

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

При работе с программами, ориентированными на DirectX, пользователь не выполняет перечисленные выше настройки, поскольку они производятся автоматически.

5. Устройство и характеристики видеоадаптера

Первые 3D -акселераторы выполнялись в виде самостоятельного устройства только для работы с трехмерной графикой, устанавливаемого в слот шины ввода/вывода и соединяемого с видеоадаптером специальным кабелем.

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

Современный видеоадаптер (видеокарта) включает следующие основные элементы:

графический процессор;

модули оперативной памяти;