e.motion
Статьи

Икс-файлы Microsoft

Авторы: Александр Белков, Дмитрий Смирнов
Опубликовано в журнале «Домашний компьютер» №5 от 21 апреля 2005 года.

Direct — прямой; противоположный кривому.

Словарь Lingvo

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

До появления DirectX лидирующее место в игровой компьютерной индустрии занимали игры под DOS. Для создателей игр это означало, как минимум, необходимость прописывать взаимодействие программы со всеми распространенными звуковыми картами (а на тот момент их существовал не один десяток), необходимость хранить видеоряд для карт разной производительности и т. д. А сколько мучений программистам доставила особенность адресного пространства DOS с невозможностью прямого обращения к адресу большему, чем базовые 640К!

Надо заметить, ранние версии Windows не отличались успехами в области обработки видеоизображения, за что разработчики компьютерных игр «форточки» не любили. Но компания Microsoft предложила революционное решение, заявив, что проблему взаимодействия программного обеспечения и железной начинки Windows возьмет на себя. Идея была приятной во всех отношениях, так как позволяла программистам не задумываться о тонкостях работы тех или иных карт, а производителям задавала единый формат ввода/вывода данных. Если вообразить себе диаграмму, с одной стороны которой нарисована звуковая карта, стрелочкой связанная с облаком DirectX, а оно, в свою очередь, связано такой же стрелочкой с блоком «Приложение» — возможно, радость разработчиков станет понятнее1. Производители игр и железа получили возможность, во-первых, забыть о существовании друг друга; во-вторых, перестать обмениваться взаимными обвинениями о неработоспособности железа/«глючности» программы; в-третьих, виноватой во всех последующих бедах была назначена Microsoft. Идея — гениальная как с технологической, так и с маркетинговой точки зрения, и устраивала всех. Пользователь в этой ситуации получил возможность больше не покидать Windows, чтобы запустить любимую игру, а это устраивало как его самого, так и Microsoft. И, конечно, ушел в прошлое выбор прерывания, DMA-канала и драйверов для каждой новой программы.

На первых порах DirectX воспринимали исключительно как игровой инструмент, но со временем эта технология стала использоваться практически везде, где нужен активный ввод/вывод информации. До нынешнего дня она претерпела множество модификаций; последний релиз пакета называется DirectX 9.0c, причем обновления девятой серии (9.0–9.0a–9.0b–9.0c) помпезно преподносились как критически важные.

Конечно, путь развития DirectX нельзя назвать гладким и ровным. Далеко не сразу этот стандарт был признан мировыми лидерами. Вплоть до версии 6.0 Microsoft получала множество нареканий и пожеланий по поводу работоспособности модулей, но тотальная совместимость со всеми операционными средами Windows и колоссальная база драйверов сделали свое дело, и формат DirectX де-факто стал игровым стандартом. Участия международных комиссий и коллегий по всеобщей стандартизации не потребовалось. И если 10–15 лет назад компании Microsoft приходилось подгонять свои продукты под популярные видео- и звуковые карты, теперь все мировые производители «железной» начинки вынуждены скрупулезно исследовать и соревноваться между собой в умении и способности более полно поддерживать новые стандарты DirectX.

Так, одной из первых видеокарт, производители которой заявили о полной аппаратной поддержке DirectX 9.0, стала ATI Radeon 9700 Pro. Эта плата позволяет воспроизвести без загрузки центрального процессора любые эффекты DirectX 9.0, если, конечно, они заложены разработчиками игры или иного видеоприложения. Более новая продукция ATI, например, семейства Radeon 9800 и Radeon X800, конечно, продолжила эту традицию. Вообще, идея максимального использования возможностей видеокарты получила в последние годы невероятное развитие: современная видеокарта являет собой практически отдельный компьютер с собственной памятью, процессором и системой охлаждения. По производительности (да и по стоимости) эти видеокарты превосходят 20% процентов имеющихся компьютеров — ведь в мире еще достаточно машин с процессором медленнее 500 МГц и памятью менее 256 Мбайт.

Основной конкурент ATI, компания NVIDIA, также не сдает лидирующих позиций на графическом рынке. Она разработала собственную систему CineFX 3.0, во многом ориентированную на работу с DirectX 9.0. Эта технология направлена на превращение компьютерной анимации в полноценное видеоизображение.

еалистичность некоторых кадров может быть настолько высокой, что отличить синтезированную картинку от обычного видео не так-то просто.

Однако давно уже стоит задаться вопросом — есть ли у DirectX конкуренты? Неужели никто не пытался перехватить у Microsoft инициативу? Ответ лежит примерно в той же плоскости, что и ответ на вопрос: «Есть ли конкуренты у Windows?» Да, есть. Но немного.

Так, наиболее часто упоминающийся из них — технология OpenGL (разработанная культовой в свое время компанией Silicon Graphics, теперь она называется SGO). Стандарт OpenGL изначально разрабатывался для трехмерной графики, причем в основе его идеологии — переносимость на любую платформу, что не светит Intel-ориентированной DirectX.

В области звука альтернативой DirectX можно считать стандарт VST, разработанный немецкой компанией Steinberg. VST — альтернативный способ создания звуковых эффектов в реальном времени. Профессионалы признают, что DirectX-эффекты действуют несколько более медлительно, чем VST (а при синхронизации музыки между несколькими устройствами это критично), и в целом VST считается более гибким и удобным инструментом, хотя и получившим меньшее распространение, чем библиотеки Microsoft. И так же, как некоторые видеокарты поддерживают и DirectX, и OpenGL, существуют и аудиопрограммы, умеющие одновременно поддерживать подключаемые модули DirectX и VST.

Таким образом, появление не столько технологии, сколько идеологии Microsoft DirectX открыло новую эру в архитектуре современных компьютеров и взаимодействии программной и аппаратной сущностей. Подсистемы компьютера стали обзаводиться собственными процессорами и памятью; для управления этими модулями были разработаны унифицированные библиотеки, существенно снизившие «коэффициент трения» между программистами и инженерами. Приложения стали разрабатываться без оглядки на аппаратную зависимость; в случае, если это возможно, DirectX использует аппаратное ускорение, если же такой возможности нет — включается режим эмуляции. Причем эти действия не видны не только пользователю, но и программисту. Разница заметна лишь в скорости, которая легко может быть увеличена с помощью установки более современного «железа» и драйверов.

К отрицательным сторонам DirectX можно, пожалуй, отнести его привязку к Intel-архитектуре и некоторую медлительность — ведь процесс ускорения становится все тяжелее. Вызывает опасения и общая тенденция к глобализации: монопольное владение Microsoft означает, что последняя по своему желанию может «остановить прогресс» или начать диктовать компьютерному миру условия. Хотя двигателем прогресса, конечно, является не Microsoft, а геймеры, готовые пойти на все ради настоящих ощущений, достигаемых в искусственной реальности.

В основе всего

Являясь одним из наиболее универсальных инструментов по обработке объемных потоков информации, DirectX включает следующие базовые компоненты:

DirectXGraphics. Содержит 2 модуля: DirectDraw и Direct3D. DirectDraw — самый знаменитый из всех компонентов DirectX, используется для обработки двухмерного изображения. Именно он стал первым универсальным посредником между программой и аппаратными средствами. Помимо обмена командами и данными DirectDraw осуществляет функции диспетчера видеопамяти и позволяет максимально сократить передачу данных между системной памятью и памятью на видеокарте. Большинство операций под управлением DirectDraw выполняются на стороне видеокарты, что существенно увеличивает производительность системы и снимает нагрузку по обработке изображения с центрального процессора. Многие принципы работы DirectDraw стали основой появившегося позже модуля Direct3D, используемого для обработки трехмерного изображения. Комплект DirectXGraphics позволяет создавать графические модели с множественными источниками света, формировать многочисленные фотоэффекты с отражениями, преломлениями, наложениями и т. д., программировать сложные объемные эффекты (взрывы, пыль, туман), обладает многоуровневой детализацией — и все это по умолчанию совместимо с Windows! Так что популярность «форточек» у разработчиков игр с некоторых пор почти абсолютна;

DirectPlay. Этот модуль разработан специально для многопользовательских сетевых приложений — в первую очередь это, опять же, мощные сетевые игры. DirectPlay работает по тем же принципам, что и остальные компоненты DirectX: содержит готовые инструменты для взаимодействия с сетевым оборудованием и элементы сетевого окружения, с помощью которых можно создать удобное для игр сетевое пространство. Благодаря DirectPlay игроки обмениваются голосовыми сообщениями; с помощью элемента DirectPlay Lobby можно объединять и распределять людей в командных сетевых играх. Другими словами, библиотека DirectPlay удерживает разработчиков от изобретения однотипных сетевых «велосипедов» для каждой новой игры;

DirectInput. Из названия явствует, что этот механизм отвечает за получение и обработку информации, поступающей от пользователя через многочисленные устройства ввода (клавиатура, мышь, джойстик, руль, перо и им подобные). Этот модуль обращается напрямую к драйверам устройств, минуя команды операционной среды Windows. DirectInput может обрабатывать как информацию активного приложения, так и работать в фоновом режиме. Для DirectInput не имеют значения региональные и языковые настройки клавиатуры, но если в самом драйвере мыши прописаны настройки на дополнительные кнопки или колесо прокрутки, DirectInput самостоятельно обнаружит это и будет соответствующим образом реагировать. Microsoft верна идее стандартизации: работа DirectInput организована таким образом, что приложению не приходится задумываться над тем, откуда поступили данные — с клавиатуры или джойстика. Программисты избавлены от необходимости писать отдельные обработчики событий для каждого устройства ввода. Программу волнует только факт получения той или иной команды, и не более;

DirectXAudio. Справедливости ради нужно отметить, что обработка звука никогда не была коньком компании Microsoft. Но за последние несколько лет и тут произошли грандиозные изменения, ответственными за которые стали два компонента DirectX — DirectSound и DirectMusic, входящие в комплект DirectXAudio. Они реализуют принципы DirectDraw, но уже в контексте обработки звука. Как и в случае с изображением, главная задача DirectSound — создание универсального буфера между программными продуктами и звуковыми картами. И снова в первых версиях были только базовые звуковые функции, к которым со временем добавились многочисленные эффекты и обработчики — от эффектов отражения, эха и реверберации до 3D-позиционирования. DirectMusic взял на себя работу с MIDI-интерфейсом, который обрел в игровом контексте вторую жизнь*. Эта библиотека позволила разработчикам не только записывать мелодию, но и более однозначно назначать инструменты, с помощью которых она воспроизводится; аппаратные же требования DirectMusic вынудили производителей звуковых чипов сделать MIDI-звучание более единообразным;

DirectShow. Эта библиотека служит для обработки мультимедийных потоков (видео, аудио, DVD), позволяя управлять цифровыми видеокамерами, TV-тюнерами, DVD-приводами и многими другими устройствами ввода-вывода мультимедийной информации. На основе DirectShow работает множество программ, таких как iuVCR, которые позволяют превратить компьютер в цифровой видеомагнитофон;

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

* Дело в том, что в ранних DOS-овских играх MIDI использовался довольно активно, так как мелодии в MIDI-записи занимали на несколько порядков меньше места, чем WAV (про MP3 тогда речь не шла — во-первых, не устоялся стандарт, во-вторых, на декодирование MP3 в реальном времени мощности среднестатистического компьютера не хватало). Однако характер звучания MIDI-инструментов в зависимости от синтезирующей микросхемы аудиокарты существенно различался; MIDI-последовательность обозначала лишь порядок нот и длительность их звучания, но не характер самого звука. С появлением процессоров класса Pentium II игровой MIDI стал отходить на второй план, так как звучание игр стало возможно воспроизводить только силами WAV и MP3, кодировщики и алгоритмы сжатия звука получили серьезное развитие, винчестеры стали больше, а скорость передачи данных — выше. На некоторое время MIDI стал уделом музыкальных профессионалов, но тут пришел DirectMusic.

1 В роли стрелочек выступили несколько API — интерфейсов программирования приложений, то есть стандартов, которых надо придерживаться программистам.

  • WordPress

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

e.motion