Железный Четверг: Что такое DirectX, и с чем его едят

DirectX создавался специально для того, чтобы превратить операционную систему Windows в основную платформу для разработки игр. Как ему это удалось и что это вообще за штука расскажет вам Александр Чуприн - ведущий Железного Четверга!

Было время, когда самой популярной операционной системой являлась MS-DOS, а компьютеры были гораздо слабее любого ныне существующего смартфона и КПК. Но играть хотелось всегда. И разработчики программного обеспечения, как ни странно, успешно писали замечательные игры, которые требовали всего лишь несколько мегабайт, а то и килобайт оперативной памяти. К сожалению, помимо трудностей с малым объёмом RAM возникали и другие проблемы, которые напрямую зависели от аппаратных комплектующих компьютера, так как игра должна была поддерживать взаимодействие с огромным числом существующих в то время видео- и аудиокарт. Поэтому программистам приходилось писать собственную реализацию взаимодействия с этими устройствами. Зачастую у разработчиков не было даже документации к драйверам, которые использовали конкретные аппаратные комплектующие, поэтому поддержка  этих устройств реализовывалась крайне плохо.

Но многое изменилось с выходом в свет операционной системы Windows 95.  Корпорация Microsoft сделала почти невероятное - благодаря созданию аппаратно независимого интерфейса программирования (API - Application Programming Interface), великого и ужасного DirectX, писать компьютерные игры стало несоизмеримо проше, чем раньше.

DirectX создавался специально для того, чтобы превратить операционную систему Windows в основную платформу для разработки игр. До этого практически все программисты, как было упомянуто ранее, писали игры только под MS-DOS, и лишь небольшая часть компьютерных игр делалась для ОС Windows 3.xx. Руководство корпорации Microsoft как в воду глядело - нужно было привлекать разработчиков игр, для того чтобы Windows прочно укрепилась на позициях. Одной из ранних попыток Microsoft облегчить жизнь программистам был выпуск WinG, но до функционала DirectX ему было очень далеко. А теперь многие программисты смогли по достоинству оценить новые возможности - не нужно отвлекаться на реализацию поддержки великого множества комплектующих, а значит можно сосредоточиться непосредственно на разработке игры. Отныне если у устройства имелась поддержка DirectX, то используя DirectX SDK при разработке игры, можно было достигнуть полной совместимости с большим количеством оборудования.

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

Не стоит удивляться, что благодаря стараниям компании Microsoft DirectX стала широко использоваться для создания компьютерных игр. Многие помнят, как во время установки игры компьютер заодно предлагал обновить или установить DirectX, хотя сейчас он включён в стандартный набор программного обеспечения операционной системы Windows. Например, в поставку операционной системы Windows XP входит девятая версия DirectX, а в Windows Vista включена десятая версия. Следует заметить, что DirectX обновляется довольно часто, и версия, включённая в ОС Windows, зачастую является далеко не самой новой. На сегодняшний день DirectX 11 является самой последней версией, но, к сожалению, эта версия не может быть установлена на операционную систему Windows XP. Поэтому полноценная работа игр, использующих актуальную версию DirectX, может быть только на операционных системах Windows Vista и Windows 7.

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

  • DirectX Graphics - набор интерфейсов для обработки и последующего вывода графики;
  • Direct3D - для ускорения трехмерной графики;
  • DirectInput - интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров;
  • DirectPlay - интерфейс сетевой коммуникации игр;
  • DirectSound и DirectMusic - интерфейсы для работы со звуком;
  • DirectSetup - часть, ответственная за установку DirectX;
  • Direct Media Objects реализует функциональную поддержку потоковых объектов.

Всем будет интересно узнать, что компонент Direct3D был попыткой Microsoft монополизировать производство игр. В задачи «корпорации зла», как ее прозовут неблагодарные пользователи в будущем, входило создание универсального интерфейса для программирования ускорителей трехмерной графики. Однако помимо очевидных преимуществ у Direct3D были и явные недостатки, и именно поэтому не все производители трехмерных игр использовали компонент Direct3D, предпочитая или интерфейс OpenGL производства Silicon Graphics, или писали игры под Glide, который поддерживался только видеокартами на чипсете 3DFX. Всем известный и всеми любимый Quake использует OpenGL для отрисовки и ускорения графики, а в первых частях Tomb Raider для этих целей был использован DosGlide. На сегодняшний день немало игр до сих пор выходит для OpenGL. Среди них широко известные игры от id Software, на движках которых многие разработчики выпустили свои собственные игры. Ну и, конечно, DirectX является базой для Xbox API (специальная версия DirectX, созданная для этой консоли).

Взгляните на огромный потенциал DirectX - он обеспечивает прорисовку текстур, эффекты преломление света, отражения и многие другие эффекты, используемые в играх, и, кроме того, обеспечивает необходимое взаимодействие игры со всеми устройствами управления, включая клавиатуру, мышь, джойстик или геймпад. За вывод звука и реализацию звуковых эффектов, таких как объёмность звучания, также отвечает один из компонентов DirectX.

Как и все успешные и приносящие прибыль идеи, реализация аппаратно независимого интерфейса программирования DirectX проходила очень стремительно. Вслед за DirectX 3 был выпущен DirectX 5 (DirectX 4 не существовало, его пропустили и сразу выпустили пятую версию),  затем DirectX 6, 7, 8, 9, 10 и, наконец, последняя 11-ая версия. Каждая версия предоставляла новые возможности и увеличивала функционал платформы Windows. DirectX 8 считается началом эпохи программируемых шейдеров. До DirectX 8 все функции были строго зафиксированы, поэтому разработчик мог применять в своих приложениях только те эффекты, которые поддерживались определенным типом видеоадаптеров. Например, если графический процессор не поддерживал какую-нибудь  функцию, то не существовало никакого способа внести этот эффект в свою игру. С появлением программируемых графических процессоров все изменилось, и теперь разработчики игр могут сами писать любые эффекты и включать их в своих играх. DirectX 8 и 8.1 стали поддерживать Shader Model 1.1 - 1.3 (DX8.1 включал также SM 1.4). Шейдерная модель дала новые возможности и увеличила потенциал DirectX. В DirectX 9 появилась поддержка Shader Model 2.0, а с выходом DirectX 9.0c появилась и поддержка Shader Model 3.0, которая давала почти безграничные возможности разработчикам, и лишь ограниченные мощности оборудования не давали им развернуться в полную силу.

Одновременно с релизом Windows Vista Service Pack 1, корпорация Microsoft представила DirectX 10, абсолютно новую модель драйверов, что означало отсутствие обратной совместимости со старыми версиями ОС Windows, например, с очень популярной Windows XP. Последующая версия DirectX 11 работает как в Windows Vista, так и в следующих версиях Windows.

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

Низкоуровневая поддержка аппаратного обеспечения и операционной системы DirectX 11 имеет программную поддержку предыдущего уровня аппаратного обеспечения DirectX 10, поэтому старые видеокарты с поддержкой DirectX 10 способны на часть возможностей DirectX 11, таких как многопоточность рендеринга (при наличии последней версии соответствующих драйверов).

Улучшенная многопоточная обработка

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

Новые этапы аппаратной обработки изображения для тесселяции

Аппаратная тесселяция в DirectX 11 позволяет использовать широчайший набор алгоритмов увеличения детализации базовых моделей при небольших затратах производительности. В основном тесселяция (разбиение модели на большее количество треугольников) используется для поверхностей земли, воды и для персонажей.

Shader Model 5.0

В этой модели шейдеров предложен новый набор инструкции с более гибким доступом к данным. Весь набор команд унифицированы, он один для шейдеров всех типов: Vertex, Pixel, Hull, Domain, Geometry и Compute. При этом применена объектно-ориентированная модель, очень удобная для разработчиков.

Вычислительные шейдеры

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

Также, в DirectX 11 появилась возможность сжатия текстур, в том числе и 16-битных HDR текстур, которые часто применяются в современных играх.

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

Пришло время подвести итоги. Direct X - основной, успешно развивающийся инструмент разработки графических игр и приложений, обеспечивающий программирование видеографики под операционную систему Microsoft Windows. Direct X постоянно совершенствуется, позволяя использовать при разработке игр новые аппаратные технологии, предлагаемые производителями графических адаптеров, тем самым обеспечивая актуальность средств реализации графических эффектов и функций обработки графики. Альтернативные графические библиотеки, такие как OpenGL и Glide значительно уступают Direct X в популярности использования при разработке игр, поэтому можно ожидать, что в будущем корпорация Microsoft будет развивать этот API еще довольно долго, облегчая жизнь разработчикам игр и непосредственно пользователям.

Пожалуйста, оцените работу редакции:
Нравится Не нравится
8 0
3725 просмотров всего
Добавить комментарий Обсуждение обзора
Осталось символов
Добавить
1234
Gromm добавил комментарий | 28 октября 2010 16:55
спасибо gameguru.
многое узнал про DirectX.
Ответить Цитата
0
Таксист Филинович добавил комментарий | 28 октября 2010 16:59
Спасибо. Многое узнал.
Ответить Цитата
0
Медвежуйка добавил комментарий | 28 октября 2010 17:12
Хорошая и интересная статья. Спасибо
Ответить Цитата
0
FanaT добавил комментарий | 28 октября 2010 17:13
Немного обидно, что при установленном 11-ом Директе, видеокарта RADEON HD4850 работает только на 10-м и ниже.

Ответить Цитата
0
VIT добавил комментарий | 28 октября 2010 17:21
Спасибо.
Ответить Цитата
0
Joki добавил комментарий | 28 октября 2010 17:38
Почитал с удовольствием, спасибо!)
Ответить Цитата
0
R.N. добавил комментарий | 28 октября 2010 17:42
спс
Ответить Цитата
0
Rock n Rolla добавил комментарий | 28 октября 2010 18:12
Очень хороший обзор.
Такой маленький ликбезик))
Ответить Цитата
0
Apollo добавил комментарий | 28 октября 2010 18:27
Спасибо тепербь я узнал для чего он нужен!..
Ответить Цитата
0
)PiRaMiD-HeaD( добавил комментарий | 28 октября 2010 19:07
СПС!!!Познавательная статейка=)
Ответить Цитата
0
1234 Добавить комментарий
Осталось символов
Добавить
Горячие обсуждения