DirectX — что это такое, как оно работает, где скачать

Стал часто сталкивался со всевозможными заблуждениями на тему DirectX. Например, пользователи пытаются ставить DirectX каких-то неправдоподобных версий, скачивают непонятно что с каких-то «левых» сайтов и т.п., получая в итоге всевозможные ошибки в работе Windows и игр.

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

1. Что такое DirectX

Чтобы разобраться, где правда, а где вымысел, для начала узнаем — что же такое DirectX? Википедия говорит нам:

DirectX (от англ. direct — прямой, непосредственный) — это набор API, разработанных для решения задач, связанных с программированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. … Зачастую обновленные версии DirectX поставляются вместе с игровыми приложениями.

Более простыми словами: DirectX — это «прослойка» между видеокартой и играми, позволяющая полностью реализовать всю вычислительную мощь компьютера для отрисовки красивой графики.

Помню, как в 2003 году я радовался правдоподобным отражениям в стеклах машин и лужах на дороге в игре Need for Speed: Underground, когда установил в компьютер видеокарту с поддержкой DirectX 9. Конечно, одними отражениями дело не ограничивается, но обо всем по порядку.

2. Чем отличаются версии DirectX

Технологии прогрессируют довольно быстро. Каждая новая версия DirectX позволяет программистам добавить какой-нибудь новый эффект в игру, а старые — оптимизировать.

Думаю, наиболее наглядно разницу между возможностями DirectX разных версий покажет это видео:

Обратите внимание на красивые эффекты летящего снега из-под колес машины и мягкие тени в DirectX 11 версии (слева). В принципе, такие эффекты, как мягкие тени и снег из-под колес можно реализовать, ограничившись технологией DirectX 9, но падение производительности будет ощутимым — в «девятке» нет ни оптимизации, ни грамотной реализации подобных эффектов.

Второй пример — игра Crysis 2:

В целом, чем выше версия DirectX — тем лучше картинка. Но не стоит ожидать чуда — зачастую изменения не бросаются в глаза. На мой взгляд, главная причина столь малой разницы качества изображения в том, что сейчас игры разрабатываются одновременно для игровых консолей Xbox, Sony Playstation и ПК. Приставки по сравнению с современными «персоналками» слабы в плане производительности и поддерживаемых технологий. В итоге мы играем на компьютере в игры, графика которых осталась на уровне года выхода консолей, любуясь на размытые текстуры и упрощенные эффекты. Да, есть игры, разработанные или доработанные для ПК, но таких единицы.

Типичный пример межплатформенности — игра Skyrim:

Разница в графике между Playstation 3 и Xbox360 заключается в деталях: на PS3 где-то воды капает мало, на Xbox 360 тени не реагируют на мерцающие источники света. На ПК (в видео обозначен как «Windows») таких проблем нет, плюс видны объекты на дальних расстояниях, но больше никаких улучшений нет. Позже разработчики выпустили набор текстур высокой четкости для ПК-версии игры, но кардинально графику это не улучшило.

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

Видите разницу? Красивое освещение, четкие текстуры, плавные движения. Между прочим, такой уровень детализации был бы недостижим с помощью устаревших технологий DirectX 9 — слишком много объектов находятся в кадре одновременно. Также присутствует много эффектов, которые реализуются силами видеокарт с поддержкой DirectX 10 как минимум.

Возможности графического движка игры Crysis 3:

Вывод: вопреки мнению некоторых пользователей, DirectX не улучшает графику в играх, а только дает возможность программисту сделать игру красивее. Если игра разрабатывалась для DirectX 9, то наличие DirectX 10-й версии ничего не изменит. Все зависит не только от возможностей видеокарты, но и от поддержки технологий игрой. Если все совместить — получится просто чудесная игра в плане графики.

3. Разные Windows и версии DirectX

DirectX по сути представляет собой набор файлов — программных библиотек. Если их не будет в системных папках, то игры в лучшем случае будут отображаться без эффектов, в худшем — не запустятся, выдавая ошибку (при запуске игры появляется ошибка «не найден d3dx9_42.dll», где цифры могут быть разными).

Минимальный набор этих файлов уже присутствует в только что установленной Windows. В зависимости от версии операционной системы, будет разный комплект файлов, а значит — поддержка разных версий DirectX (информация отсюда):

  • Windows XP SP2 — DirectX 9.0c
  • Windows Vista — DirectX 10
  • Windows Vista SP1 — DirectX 10.1
  • Windows Vista SP2 — DirectX 11
  • Windows 7 — DirectX 11.1
  • Windows 8 — DirectX 11.1
  • Windows 8.1. — DirectX 11.2
  • Windows 10 — DirectX 12

Предыдущие версии включены. Т.е. Windows 10 имеет поддержку 12-й версии, DirectX 11.2, 11.1, 11, 10.1, 10, 9 и ниже.

О том, как установить полный набор файлов DirectX, будет ниже по тексту.

4. Поддержка видеокартой DirectX разных версий

Чем новее видеокарта, тем более высокую версию DirectX она поддерживает. Все предыдущие версии также будут поддерживаться.

Windows тоже должна поддерживать эту версию. С видеокартой, поддерживающей DirectX 12, в Windows XP вы ничего не сможете сделать — запустятся игры, работающие только через девятый DirectX и ниже. Во все еще популярной Windows 7 ситуация схожа — DirectX последней версии нет.

5. Как узнать, какую версию DirectX поддерживает моя видеокарта и Windows?

5.1. Видеокарта

Подсмотреть информацию о том, какую версию DirectX поддерживает ваша видеокарта, можно на официальной страничке сайта производителя и в любом онлайн-магазине. Например, в Яндекс.Маркете.

5.2. Windows

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

Алгоритм таков:

1. Убедитесь, что у вас установлены все обновления Windows (Пуск — Все программы — Центр обновления Windows — Поиск обновлений — Установить).

2. Необязательный пункт: обновите драйвер видеокарты до самой новой версии:

Официальная страница драйверов для видеокарт nVidia

Официальная страница драйверов для видеокарт AMD (см. выбор драйвера справа вверху страницы)

Официальная страница драйверов для видеокарт Intel (выберите в списке «Графические адаптеры», затем нужную модель)

3. Нажмите Пуск — Выполнить (если нет такого пункта, можно нажать сочетание клавиш Win+R, где Win — кнопка с логотипом) — Введите «dxdiag» без кавычек — затем кнопка ОК.

Появится окно «Средство Диагностики DirectX«. На вкладке «Система» можно увидеть установленную на компьютере версию DirectX:

Средство диагностики DirectX - вкладка "Система"

Эту версию сменить нельзя, за исключением обновления системы — например, при обновлении Windows Vista SP1 на SP2 поддерживаемая версия изменится с 10.1 на 11.

Совет
Другими способами, кроме обновлений системы, установить поддержу нового DirectX нельзя. Никакая подмена файлов не включит на старой Windows поддержку новых версий DirectX.

В интернете полно всяких наборов «DirectX 10 для Windows XP» и аналогичных. Запомните — это обман. В Windows XP невозможно включить поддержку современных версий DirectX.

6. Как заставить игру X использовать DirectX версии Y?

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

Помните
Поддерживать DirectX определенной версии должны все стороны: видеокарта, операционная система и игра.

7. Нужно ли устанавливать DirectX с сайта Microsoft? Что это дает?

Кратко: можно, только это версию DirectX не изменит!

Скачать
Если хотите, чтобы игры запускались нормально — обязательно установите все обновления из Центра обновления Windows, потому что именно оттуда Windows берет свежие версии библиотек. Подтверждение от Microsoft.

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

Windows 7, 8 и 10 эти библиотеки, в общем-то, не нужны, потому что требуемые обновления приходят через Центр обновлений. Но если у вас не запускается какая-то старая (2005-2010 годов) игра, использующая DirectX 9, пробуйте установить тот самый инсталлятор.

Список ошибок DirectX, исправляемые с помощью этого установщика

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

DirectX - загрузка полного комплекта обновлений
DirectX — загрузка полного комплекта обновлений

Судя по датам, на момент написания этой записи обновления компонентов DirectX выходили 18 апреля 2011 года (обновление от 29.01.2016 г.: теперь все приходит через Центр обновлений другими пакетами).

Загруженная программа — по сути самораспаковывающий архив. Откроем его архиватором 7-zip:

7-zip открыл DirectX инсталлятор

Обратите внимание на имена файлов — в инсталляторе содержатся как файлы, имеющие отношение в DirectX 9 (d3dx9_31, d3dx9_32, d3dx9_33 и т.д), так и к DirectX 10 (d3dx10_35, d3dx10_40 и т.д.). Каждая версия обновляется — выходят новые версии .dll библиотек, добавляются новые.

Совет
Еще раз напомню: это не обновление DirectX с версии на версию. Это обновление версий программных библиотек и к нумерации 9, 10, 10.1, 11, 11.1 отношения не имеет. Вы не сможете повысить версию установленного DirectX таким способом.

После установки добавятся новые библиотеки и обновятся старые, что даст возможность запуститься тем играм, которые сообщают об ошибке отсутствия d3dx*. Так что попробовать установить можно.

8. Откуда скачать DirectX?

Просто установите обновления через Центр обновления!

Ни с каких сайтов скачивать ДиректИкс нельзя! Вы рискуете попасть на вирусы!

Компоненты DirectX обновляются через Центр обновления Windows. Только так вы можете получить поддержку DirectX 10.1 и 11 на Windows Vista, 11.1 на Windows 7.

Приведу цитату из статьи Майкрософта «Как установить последнюю версию DirectX»:

Microsoft DirectX входит в качестве составной части в операционных системах Windows. Вы можете обновить DirectX, применив последний пакет обновления или другие обновления через Центр обновления Windows.

9. Если скачать и установить DirectX на Windows XP, появится ли там DirectX 11?

Не появится. DirectX 10, 11 и последующих версий на Windows XP не будет никогда. Можно долго распространяться на эту тему, я лишь скажу следующее: владельцы Windows XP, смиритесь — эта ОС давно уже перестала быть «игровой». Многие современные игры не поддерживают Windows XP. Даже Майкрософт официально забила на нее.

Стоит заметить, что существует сборка DirectX 10 для Windows XP, сделанная умельцами. По сути это всего лишь набор программных библиотек, не добавляющих эффекты DirectX 10, а только позволяющая некоторым играм запускаться без ошибок в XP, если в их настройках включен режим «DirectX 10». В любом случае, этот набор библиотек с высокой долей вероятности может вызвать глюки в операционной системе, так что ставить такое поделие ни в коем случае нельзя.

10. Как установить DirectX версии 11.1 на Windows 7?

В связи с появлением Windows 10 этот вопрос актуален как никогда. Там поддержка DirectX 11.1 уже есть изначально. В Windows 7 изначально установлена версия 11. Поддержка новой версии DirectX придет через Центр Обновления Windows (Пуск — Все программы — Центр обновления Windows). Обновление называется KB2670838.

Так что обновляйте Windows через Центр Обновления. Windows 8 это тоже касается.

11. DirectX 12

Много слухов циркулирует вокруг DirectX 12. Попробуем собрать факты и догадки.

11.1. Windows 7, 8 и DirectX 12

DirectX 12 в Windows 7 и 8 не будет.

11.2. Старые видеокарты будут частично поддерживать DirectX 12

Представители производителя видеокарт AMD и nVidia заявляли, что видеокарты, поддерживающие DirectX 11, будут частично поддерживать DirectX 12. Это оказалось маркетинговым лукавством. Преимущество DirectX 12 перед 11 — 7-10-кратное увеличение производительности за счет оптимизации работы с компонентами видеокарты (памятью, видеопроцессором). «Железная» часть видеокарт, выпущенных в эпоху DirectX 11 и ранее, не приспособлена под DirectX 12, поэтому основная «фишка» новой версии API — ускорение обсчета графики — работать не будет.

Что же мы имеем? Есть три уровня поддержки старыми видеокартами нового графического API: Tier 1, Tier 2 и Tier 3. Tier 3 — самая полная поддержка стандарта.

11.2.1. Видеокарты без поддержки DirectX 12 (но поддерживающие DX10 и/или 11):

Intel

Intel ValleyView2 HD Graphics

Intel HD Graphics 2500

Intel HD Graphics 4000

AMD

AMD Radeon HD 5xxx

AMD Radeon HD 6xxx

AMD Radeon HD серий 7xxxG, M и D

AMD Radeon HD 8xxxG

Nvidia

Вроде как все должны, но есть разные уровни поддержки. Об этом далее

11.2.2. Видеокарты с поддержкой DirectX 12 Tier 1

Intel

Intel HD Graphics 4400

Intel HD Graphics 4600

Intel HD Graphics 5000

Intel Iris Graphics 5100

Intel Iris Pro Graphics 5200

AMD

Увы, нет.

nVidia

NVIDIA GeForce GT 430

NVIDIA GeForce GT 440

NVIDIA GeForce GTS 450

NVIDIA GeForce GTX 460

NVIDIA GeForce GT 520M

NVIDIA GeForce GT 520

NVIDIA GeForce GT 525M

NVIDIA GeForce GT 540M

NVIDIA GeForce GTX 550 Ti

NVIDIA GeForce GTX 560

NVIDIA GeForce GTX 560 Ti

NVIDIA GeForce GTX 570

NVIDIA GeForce GTX 580

NVIDIA GeForce 610M

NVIDIA GeForce GT 610

NVIDIA GeForce GT 620M

NVIDIA GeForce GT 620

NVIDIA GeForce GT 630M

NVIDIA GeForce GT 630

NVIDIA GeForce GT 635M

NVIDIA GeForce GT 640M

NVIDIA GeForce GT 640

NVIDIA GeForce GT 730

11.2.3. Видеокарты с поддержкой DirectX 12 Tier 2

Intel — нет.

AMD — нет.

Nvidia

NVIDIA GeForce GT 650M

NVIDIA GeForce GTX 650

NVIDIA GeForce GTX 650 Ti

NVIDIA GeForce GTX 650 Ti Boost

NVIDIA GeForce GTX 660M

NVIDIA GeForce GTX 660

NVIDIA GeForce GTX 660 Ti

NVIDIA GeForce GTX 670

NVIDIA GeForce GTX 680

NVIDIA GeForce GT 740M

NVIDIA GeForce GT 750M

NVIDIA GeForce GTX 750

NVIDIA GeForce GTX 750 Ti

NVIDIA GeForce GTX 760

NVIDIA GeForce GTX 765M

NVIDIA GeForce GTX 770

NVIDIA GeForce GTX 780

NVIDIA GeForce GTX 780 Ti

NVIDIA GeForce 840M

NVIDIA GeForce GTX 850M

NVIDIA GeForce GTX 860M

NVIDIA GeForce GTX 970

NVIDIA GeForce GTX 980

11.2.4. Видеокарты с поддержкой DirectX 12 Tier 3

Intel — нет.

AMD

AMD Radeon HD 7750

AMD Radeon HD 7770

AMD Radeon HD 7850

AMD Radeon HD 7870

AMD Radeon HD 7950

AMD Radeon HD 7970

AMD Radeon R4 Graphics

AMD Radeon HD 8600

AMD Radeon HD 8800

AMD Radeon R7 200

AMD Radeon R9 200

AMD Radeon R9 390X

Nvidia

А вот у нВидии видеокарт с полной поддержкой DirectX 12 пока нет.

11.2.5. Дополнительные уровни — Feature levels

Мне, как владельцу AMD Radeon HD7950, хотелось бы радоваться, но не получается. Дело в том, что Microsoft пошла дальше и ввела дополнительные уровни особенностей («Feature levels»). Уровни Tier — индикатор для покупателей, Feature levels — для разработчиков.

Feature level 11.0 — поддержка видеокартой DirectX11 и функцией «Resource Binding» из Tier 1. Представители таких видеокарт: Nvidia GeForce GTX 400/500/600/700.

Feature level 11.1 — DirectX 11.1 и поддержка множества функций, которые я здесь приводить не буду (зачем?). Представители:

  • Nvidia GeForce GTX 745/750;
  • AMD Radeon HD серий 7700-7900/8500-8900, Rx 240-280;
  • Intel HD Graphics 4200-5200, 5300-6300;

Feature level 12.0 — поддержка некоторых возможностей Tier 1 и Tier 2. Представителей мало: AMD Radeon HD 7790/8770, Rx 260/285/290.

Feature level 12.1 — полная поддержка Tier 1, аппаратная поддержка всех возможностей DirectX 12. Таких видеокарт еще не существует в природе.

Таким образом, ни одна из существующих видеокарт не поддерживает DirectX 12 полностью. Часть возможностей реализована на программном уровне, поэтому одна и та же игра, использующая DX 11 и DX 12, не получит ощутимого прироста производительности при переходе на новую версию API.

11.3. Итог

Удивительно, как сильно зависит производительность вычислений от уровня доступа к «железу» компьютера. DX 12 предоставляет возможности, которыми разработчики не должны пренебрегать. Благодаря тому, что Xbox One будет тоже поддерживать двенадцатую версию, в конце 2015 года нас ожидает множество игр с её поддержкой. Вот только чудес не будет — существующие (на 2015 год) видеокарты не оптимизированы для использования DirectX 12, прирост производительности будет мал.

2 комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *