Как установить последнюю версию DirectX
Что такое DirectX?
DirectX – это набор компонентов в ОС Windows, который позволяет программному обеспечению, в первую очередь компьютерным играм, напрямую взаимодействовать с видео- и аудиооборудованием. Игры, использующие DirectX, могут более эффективно использовать встроенные в ваше оборудование функции акселерации мультимедиа, благодаря чему повышается производительность выполнения мультимедийных задач.
Определение версии DirectX, установленной на компьютере
Инструмент DxDiag представляет подробную информацию о компонентах и драйверах DirectX, которые установлены в вашей системе и доступны к использованию.
Нажмите кнопку «Пуск», введите в поле поиска запрос dxdiag, затем нажмите клавишу «ВВОД».
Выберите элемент dxdiag в списке результатов поиска
Проверьте строку версия DirectX на первой странице отчета в разделе Информация о системе.
Проведите пальцем от правого края экрана к центру и коснитесь кнопки «Поиск». Введите запрос dxdiag в поле поиска. Или введите запрос dxdiag в строку поиска в меню «Пуск».
Выберите элемент dxdiag в списке результатов поиска
Проверьте строку версия DirectX на первой странице отчета в разделе Информация о системе.
Нажмите кнопку «Пуск» и введите в поле поиска запрос dxdiag.
Выберите элемент dxdiag в списке результатов поиска
Проверьте строку версия DirectX на первой странице отчета в разделе Информация о системе.
Версии DirectX и обновления через операционную систему
В этих версиях Windows DirectX 11.3 и 12 предустановлены.
Обновления будут доступны через Центр обновления Windows. Отдельного пакета данных версий DirectX не существует.
DirectX 11.1 предустановлен в системах Windows 8, Windows RT и Windows Server 2012 Отдельного пакета обновлений для DirectX 11.1 не существует. Вы можете установить эту версию DirectX только через Центр обновления Windows в системах Windows 8, Windows RT и Windows Server 2012.
DirectX 11.2 предустановлен в системах Windows 8.1, Windows RT 8.1 и Windows Server 2012 R2. Отдельного пакета обновлений для DirectX 11.2 не существует. Эту версию DirectX можно установить только через Центр обновлений Windows в системах Windows 8.1, Windows RT 8.1 и Windows Server 2012 R2.
Примечание. Для дальнейшего обновления DirectX вам необходимо обновить операционную систему.
DirectX 11.0 предустановлен в системы Windows 7 и Server 2008 R2. Отдельного пакета обновлений для данной версии не существует. Вы можете обновить DirectX, установив пакет обновлений, а также обновления, перечисленные ниже.
DirectX 11.1 доступен для установки в системах Windows 7 SP1 и Windows Server 2008 RS SP1 совместно с обновлением платформы для Windows 7 и Windows Server 2008 (KB2670838).
Примечание. Для дальнейшего обновления DirectX вам необходимо обновить операционную систему.
DirectX 10 предустановлен в системах Windows Vista. Отдельного пакета обновлений для данной версии не существует. Вы можете обновить DirectX, установив пакет обновлений, а также обновления, перечисленные ниже.
DirectX 10.1 предустановлен в системах Windows Vista с пакетом обновления 1 (SP1) или более поздней версии и Windows Server с пакетом обновления 1 (SP1) или более поздней версии. Отдельного пакета обновлений для данной версии не существует. Вы можете обновить DirectX, установив пакет обновлений, а также обновления, перечисленные ниже.
DirectX 11.0 доступен для установки в системах Windows Vista с пакетом обновлений 2 (SP2) и Windows Server 2008 с пакетом обновлений 2 (SP2) при установленном обновлении KB971512.
Примечание. Для дальнейшего обновления DirectX вам необходимо обновить операционную систему.
DirectX 9.0c доступен для установки в системах Windows XP и Windows Server 2003 с помощью установки среды выполнения DirectX 9.0c для конечных пользователей.
Некоторые приложения и игры требуют наличия DirectX 9. Тем не менее, на вашем компьютере установлена более поздняя версия DirectX. Если вы установили и запустили приложение или игру, для которой требуется DirectX 9, может появиться сообщение об ошибке, например «Запуск программы невозможен, так как на компьютере отсутствует d3dx9_35.dll. Попробуйте переустановить программу».
Для устранения этой проблемы необходимо установить среду выполнения DirectX для конечных пользователей.
При запуске этот пакет не вносит изменения в версию DirectX, Direct3D 9, Direct3D 10.x, Direct3D 11.x, DirectInput, DirectSound, DirectPlay, DirectShow и DirectMusic.
Для дальнейшего обновления DirectX необходимо обновить операционную систему.
Содержание
Введение. Необходимость DirectX на ОС Windows
Скачать DirectX 9 для Windows 7 (x32/x64-bit)
Существует также полный установочный пакет DirectX 9, не требующий доступа в интернет.
Официальной страницы с автономной версией DirectX 9 на данный момент больше не существует. Однако вы можете загрузить ее с нашего сайта или с сайта Microsoft.
Готово. Теперь нужно перезапустить компьютер и удостовериться в работе компонента, открыв приложение, требующее только что скачанную библиотеку DirectX 9.
Скачать DirectX 10 для Windows 7 (x32/64-bit)
550Mb библиотек и данных.
Внимание! Если вам нужен автономный установщик (файл весит
Скачать DirectX 11 для Windows 7 (x32/64-bit)
550Mb библиотек и данных Скачать с esate.ru
DirectX 11 – последняя версия компонента, который поддерживается операционной системой Windows 7. Так же, как и DirectX 10, интегрирован по умолчанию и не требует дополнительного скачивания.
Скачать DirectX для Windows 8 или 8.1
Как узнать установленную версию DirectX
Почему DirectX 12 нельзя скачать на Windows 7
У пользователя, всерьез интересующегося современной 3D-графикой, в последнее время все чаще возникает вопрос о совместимости Windows 7 с недавно вышедшими играми. Так, в системные требования к недавно вышедшим частям игр начал «проникать» новый DirectX.
Однако поставить последнюю версию этого компонента на свой компьютер у вас, увы, не получится. Это связано с тем, что единственная система, поддерживающая DirectX 12 – Windows 10. Естественно, теоретически и более старые версии ОС также способны «потянуть» новейшие разработки компьютерной графики.
Только Microsoft решила иначе. Ведь нужно продвигать новую операционную систему в массы, наращивать продажи. Соответственно, чтобы конечные пользователи все-таки обратили внимание на только вышедший продукт, нужно привнести в него определенные фишки (даже если придется исключить их из старых разработок).
Так заведено, что потенциальные покупатели не видят смысла платить за обновления или попросту бояться систем слежки, встроенных в новые версии ОС. Развеять все мифы и узнать о достоинствах Windows 10 вы сможете в следующей главе.
Обновление DirectX до последней версии на Windows 7 (8, 8.1, 10)
Удаление и переустановка DirectX на Windows 7 (XP, 8, 8.1, 10)
Иногда в работе некоторых узкоспециализированных программ или 3D-игр возникают ошибки. Это может быть связано как с появлением проблем в самом приложении, так и с установленным компонентом DirectX.
Перед тем как удалять или переустанавливать DirectX, необходимо убедиться в его неисправности и только после этого предпринимать необходимые меры. Обратите внимание!
Если программа или игра ранее работала корректно, а никаких изменений в важных системных файлах или драйверах не было, рекомендуется переустановить приложение, а также сбросить его настройки.
Удалить DirectX из Windows 7, 8, 8.1, 10 невозможно
Если вы уверены, что проблема возникает исключительно из-за DirectX, для начала переустановите его, используя полную автономную версию с официального сайта Microsoft.
В большинстве случаев проблема будет решена, и вы сможете пользоваться любой программой, которой необходимы установленные библиотеки DirectX.
Удаление DirectX 9 на Windows XP штатными средствами ОС
Решение проблем с установкой и работой DirectX
Перед прочтением данной главы рекомендуется ознакомиться с главой «Удаление и переустановка DirectX на Windows 7 (XP, 8, 8.1, 10)», чтобы сразу отсеять случаи, связанные с неисправным программным обеспечением пользователя.
Если действия из вышеуказанной главы не принесли должного результата, приступайте к ознакомлению с примерами ошибок.
Далее будут приведены типичные проблемы, так или иначе связанные с работой DirectX, которые не устраняются простым обновлением компонента.
Ошибка при запуске приложения (0xc000007b)
Окно ошибки с этим кодом может возникнуть при работе целого ряда приложений или же единственной игры или программы.
В этом случае очень часто некорректно указывается истинный «виновник» проблемы, ведь причиной 0xc000007b может стать, в том числе, и заражение компьютера вирусом.
В появившемся окне запустить без кавычек команду: «sfc /scannow» → дождаться окончания процедуры восстановления → перезагрузить компьютер.
«Компонент Direct3D 11.1 API недоступен. Необходимо обновление Windows 7».
Если вы используете оригинальный образ Windows 7 (неважно: лицензионный или пиратский), нужно просто обновить систему и установить Internet Explorer 11 с официального сайта Microsoft, чтобы исправить эту проблему.
Загрузить IE 11 с официального сайта можно, кликнув по этой ссылке 
В сборках Windows 7, у которых вырезана функция обновления или другие важные системные службы, установить Internet Explorer невозможно.
Единственный выход для решения проблемы с компонентом «Direct3D 11.1 API» – установка оригинального образа Windows 7 с необходимыми обновлениями.
Если важные возможности ОС не вырезаны автором вашей сборки, необходимо загрузить обновление «KB2731771», которое можно скачать с нашего сайта.
Ваша проблема будет решена, и IE 11 установится нормально при повторной попытке.
После проделанных действий необходимо перезагрузить компьютер, чтобы изменения вступили в силу.
Сбои при установке или работе DirectX в определенных приложениях
Проблемы при установке DirectX (DXEerror.log, критическая или внутренняя ошибка)
Не запускается DirectX или «Failed to initialize…»
Решение этой проблемы индивидуально для каждого пользователя.
Ошибка «Failed to initialize DirectX» возникает в основном при сбоях в работе самого приложения. Чтобы устранить эту неисправность, следует обновить вашу игру/программу, установив все необходимые для нее «патчи» от разработчика.
Для этого нужно посетить форум или сайт нужного приложения и найти раздел, в котором описано решение проблемы. Если вышеописанные действия не помогают, используйте рекомендации из главы: «Ошибка при запуске приложения (0xc000007b)». Это поможет решить возникшую проблему.
Почему стоит переходить на Windows 10 и DirectX12
Достоинства Windows 10 перед ОС Windows 7, 8, 8.1
DirectX 12: стоит ли ради этого обновлять систему. Игры и графические возможности будущего
DirectX 12 – новейшая версия графических библиотек от Microsoft, представленная народу на «Ежегодной конференции разработчиков игр». Компаниям-разработчикам (в частности, их программистам) наконец-то открылся совершенно новый инструмент для упрощения взаимодействия программной части компьютера с аппаратной.
DirectX 12 позволяет создателям игр не только использовать комплектующие ПК более эффективно, но и подключать к процессу работы с графикой ранее недоступные аппаратные преимущества центральных процессоров и видеокарт. Представители компании AMD (популярный производитель графических решений для игроков по всему миру) официально отметили, что новые технологии позволят составить достойную конкуренцию компании Nvidia в ведущих ценовых категориях. Рисунок 5. Сравнение видеокарт среднего ценового сегмента от компании AMD и Nvidia.
Пока DirectX 12 только набирает популярность, в то время как DirectX 11 используется практически повсеместно.
Однако совсем скоро новая версия будет внедряться во все выходящие проекты. К счастью, уже сейчас можно обновиться до Windows 10 и быть в полной готовности к потенциальному прорыву в индустрии разработки игр, который намечается, благодаря появлению DirectX 12. Крупнейшие производители видеоигр и комплектующих уже создают свои мини-шедевры, демонстрирующие великолепную графику и чудеса оптимизации.
Корпорация Microsoft совместно с программными инженерами Nvidia дала возможность разрабатывать игры под новый DirectX уже сейчас, создав специальный драйвер. Более того, Nvidia обещала выпустить поддержку 12-ой версии DirectX на все выпущенные видеокарты, совместимые с версией под номером 11.
Поэтому большая часть конечных пользователей сможет получить совершенное новое удовольствие от видеоигр, а разработчики – вывести компьютерную графику на принципиально другой уровень. Даже видеокарты 2009 года получили поддержку DX 12. Об этом – в следующей главе.
Nvidia добавила поддержку DirectX 12 для видеокарт серии GeForce 400 и GeForce 500
Возможность использовать новые технологии обработки графики были добавлены в том числе видеокартам, давно вышедшим из продажи, так как на компьютерном рынке до сих пор присутствует много устройств из старших серий. Благодаря этому, некогда игровые версии видеоадаптеров уровня GeForce GTX 570/580 смогут получить небольшой бонус к качеству картинки. Впрочем, надеяться на повышение производительности не стоит. DirectX 12 для этих видеокарт нужен в первую очередь для того, чтобы пользователи могли получить хорошую совместимость с новой ОС Windows 10.
Результаты тестирования графических возможностей с популярного иностранного сайта только подтверждают вышесказанное (переведено для esate.ru): Рисунок 6. Показатели FPS в игре Battlefield 1 на версиях DirectX 12 и 11 соответственно.
Все-таки серия GT 500 вышла достаточно давно и не может похвастаться хорошими показателями при работе с новыми технологиями.
А вот современные игровые видеокарты уже оптимизируют под DirectX 12. Поэтому полный переход на новую ступень прогресса – лишь вопрос времени!
Двадцать лет спустя. Эволюция API Microsoft DirectX
Сегодня DirectX, разрабатываемый компанией Microsoft, уже воспринимается как должное. Все привыкли, что этот API является неотъемлемой частью Windows. Новая итерация «оси» под номером 10 не стала исключением. Еще осенью прошлого года Microsoft анонсировала двенадцатое поколение DirectX. Этому событию предшествовало пять лет почти полной тишины из стана Microsoft. Компания ограничивалась лишь плановыми обновлениями API, и никакой определенности насчет будущего DirectX не было. Масла в огонь подливало и то, что многие компании-разработчики в открытую поддерживали конкурирующую технологию OpenGL. В их число входила, например, компания Valve. Вдобавок ко всему, компания AMD представила свой низкоуровневый программный интерфейс Mantle, который должен был составить конкуренцию как OpenGL, так и DirectX. К счастью, Microsoft не вышла из игры, и все это время разработчики компании упорно трудились над созданием DirectX 12, который станет частью анонсированной в январе операционной системы Windows 10. Релиз «десятки» запланирован на ближайшую осень, а это значит, что уже в конце 2015 (либо в начале 2016) мы увидим первые игры, поддерживающие новый API.
Даже спустя столько лет первый Crysis по-прежнему хорош. А ведь это всего лишь DirectX 10
Чтобы немного скрасить время ожидания, мы предлагаем вам вспомнить, как создавался и развивался DirectX на протяжении последних 20 лет.
С чего все начиналось. DirectX 1.0
История появления DirectX берет свое начало в первой половине 1990-х годов, когда компания Microsoft занималась разработкой операционной системы Windows 95, которая должна была прийти на смену MS-DOS. Главным преимуществом MS-DOS было то, что она пользовалась популярностью у разработчиков игр. По мнению трех программистов Microsoft — Крэйга Эйслера (Craig Eisler), Алекса Сен-Джона (Alex St. John) и Эрика Энгстрома (Erik Engstrom) — даже после выхода Windows 95 многие разработчики могли отдать предпочтение MS-DOS как более подходящей для создания игр платформе. Чем же «дос» так нравился программистам? Все дело в том, что, программируя под MS-DOS, разработчики обращались напрямую к железу, то есть имели прямой доступ к видеокарте, клавиатуре, мыши, звуковым устройствам и другим частям системы. Подобный подход использовался в программировании под консоли, однако создание игр для компьютера осложнялось тем, что, в отличие от приставок, здесь не было фиксированной конфигурации системы. Это приходилось учитывать при написании кода, что значительно усложняло жизнь девелоперам.
Крэйг Эйслер — один из создателей DirectX
Так или иначе, но обращаться напрямую к аппаратной части компьютера в Windows 95 стало невозможно. Причиной этого была новая защищенная модель памяти, которая запретила прямой доступ к устройствам. Шел 1994 год, Windows 95 была на подходе, и Microsoft требовалось быстрое и эффективное решение возникшей проблемы. Им стал API DirectX, за создание которого отвечали как раз Эйслер, Сен-Джон и Энгстром. Релиз DirectX версии 1.0 состоялся 30 сентября 1995 года под названием Windows Games SDK.
Первая итерация DirectX была очень упрощена относительно своих будущих версий. Она поддерживала вывод двухмерной графики, звуков, а также обрабатывала данные, поступающие с различных манипуляторов.
DirectX 1.0 разрабатывался для Windows 95
Разработчики игр встретили DirectX довольно прохладно. Во-первых, они не были уверены, что Microsoft будет поддерживать API на протяжении долгого времени. Недоверие к Microsoft возросло после того, как компания свернула поддержку API WinG, который рассматривался как один из «помощников» в портировании игр с DOS на Windows. Во-вторых, «девяносто пятая» была требовательней к аппаратной части, из-за чего производительность в играх, как правило, снижалась в сравнении с MS-DOS. Ну и в-третьих — у DOS было огромное количество энтузиастов, которые ни в какую не хотели программировать под Windows.
Стоит сказать, что к моменту появления DirectX разработчикам игр уже был доступен API OpenGL, разработанный компанией Silicon Graphics Inc и представленный в 1992 году. Но в Microsoft решили пойти своим путем. В дальнейшем противостояние DirectX и OpenGL было похоже на битву Давида против Голиафа. Microsoft, прежде всего, брала своей финансовой мощью, а Silicon Graphics — репутацией и техническим опытом. Так, выбор в пользу OpenGL тогда сделал создатель Doom и Quake Джон Кармак (John Carmack). Он считал, что программный код DirectX слишком сложный для программирования, и поэтому в открытую поддерживал более «дружелюбный» интерфейс OpenGL. Конечно же, на планы Microsoft это никак не повлияло, но прохладная встреча DirectX со стороны разработчиков ясно дала понять, что работы у инженеров компании целый непочатый край.
Скриншот из игры Doom, за разработку которой отвечал Кармак
В роли догоняющего. DirectX 2.0 и далее
Следующее поколение API DirectX было представлено в середине 1996 года. Наконец-то в состав программного интерфейса были включены пакеты Direct3D и DirectPlay. С тех пор API состоял из следующих компонентов:
DirectX 2.0 предназначался для операционных систем Windows 95 и Windows NT 4.0. С момента выпуска первой ОС прошло совсем мало времени, поэтому для этой версии было выпущено очень мало игр. Microsoft воспользовалась моментом и начала активно продвигать API среди разработчиков. Ради этого во время конференции GDC в 1996 году Microsoft даже устроила специальное мероприятие, где представила некоторые новые возможности DirectX.
Вскоре после появления второго поколения API свет увидел и DirectX 3.0. Это случилось в сентябре 1996 года. Ближе к концу года были представлены дополнения в виде версий 3.0a и 3.0b. В сравнении со второй итерацией API третье поколения получило лишь незначительные изменения, которые так и не смогли повлиять на положение DirectX среди девелоперов.
Так выглядела картинка с применением DirectX 3.0
Немного исправить ситуацию получилось у DirectX 5.0, который появился в августе 1997 года. А что же случилось с четвертым поколением? Дело в том, что разработка 4-й и 5-й итераций API началась одновременно. DirectX 4.0 рассматривался как решение на самое ближайшее время. Оно не должно было привнести каких-либо кардинальных изменений в сравнении с версией 3.0 — только несколько новых «фич». В то же время пятая версия разрабатывалась с прицелом на перспективу. Однако разработчики не проявили интереса к новым возможностям DirectX 4.0, Microsoft свернула проект. Во избежание путаницы было решено пропустить версию 4.0 и сразу выпустить DirectX 5.0.
Главным достоинством пятой итерации DirectX стал намного упрощенный код. Писать программы с помощью API стало легче, и DirectX уже не вызывал у девелоперов такой неприязни, как поначалу. Главным же недостатком пятой «директрисы» было отсутствие поддержки технологии мультитекстурирования (multitexturing). Суть этой технологии заключается в наложении на грань сразу нескольких текстур за один проход. Но тут Microsoft улыбнулась удача. В то время алгоритмы мультитекстурирования были не столь эффективны, а железо — недостаточно производительным для того, чтобы применять технологию без ущерба для производительности. Чаще всего вместо нее разработчики использовали обычные многократные проходы, во время каждого из которых на грань накладывалась только одна текстура. Для девелоперов было важно, чтобы новые игры запускались и на старых машинах, поэтому в большинстве приложений мультитекстурирование не использовалось. Microsoft от этого лишь выиграла.
А это уже DirectX 5.0
Главный недостаток DirectX 5.0 был исправлен уже в следующем поколении API под логичным номером 6. Эта итерация DirectX появилась в августе 1998 года и вновь получила улучшения в области создания программ — код стал еще проще и еще понятнее. Также DirectX 6.0 мог похвастаться поддержкой мультитекстурирования. Но исправившись, Microsoft допустила очередную ошибку — новый API не поддерживал на аппаратном уровне технологию T&L (Transform and Lightning), которая предназначалась для обработки освещения и трансформации объектов в реальном времени. Как показало время, у Microsoft был еще год в запасе для реализации поддержки T&L. GeForce 256, первая видеокарта с движком T&L, появилась только в 1999 году. Кстати, начиная с этой версии, DirectX стал своего рода мультиплатформенным продуктом. Microsoft пыталась продвинуть свою операционную систему Windows CE для консолей и вместе с «осью» поставляла специальную версию DirectX 6. Однако эксперимент, скажем прямо, не удался.
Первая часть знаменитой серии Thief использовала DirectX 6.0
DirectX 7.0 в игре Midtown Madness 2
Великий перелом. DirectX 8.0 и 9.0
2001 год стал, пожалуй, переломным в истории развития DirectX. На протяжении предыдущих шести лет Microsoft находилась в роли догоняющих. И дело было даже не в конкуренции с OpenGL, за которым развитие DirectX худо-бедно успевало, а в седьмой итерации в чем-то даже и превзошло. DirectX сам по себе догонял всю индустрию. Microsoft создавала каждую версию API с оглядкой на архитектуру новейших видеокарт. В таком положении трудно было сделать по-настоящему большой шаг вперед и вырваться в лидеры. И это не устраивало компанию. Поэтому Microsoft наладила сотрудничество с NVIDIA, и DirectX 8.0 появился почти одновременно с видеокартами GeForce 3.
В восьмом поколении архитектура API претерпела значительные изменения и стала больше отличаться от таковой в OpenGL. В DirectX 8.0 появились пиксельные и вершинные шейдеры, что облегчило программистам создание различных спецэффектов. Сами шейдеры представляют собой подпрограммы, которые загружаются в видеокарту наравне с другими данными сцены. Затем драйвер преобразует эти подпрограммы в инструкции, понятные видеочипу. Кроме вершинных и пиксельных шейдеров, DirectX 8.0 мог похвастаться поддержкой тумана и таких технологий, как bump-mapping и texture-mapping (мультитекстурирование).
Помимо этого, Microsoft выделила компоненту DirectDraw, отвечающую за отрисовку двухмерной графики, в отдельный API. Также DirectX 8.0 все еще считался неудобным в использовании, но Microsoft постаралась исправить это в обновлении с индексом 8.1.
DirectX 8.1 в игре Max Payne 2: The Fall of Max Payne
Как итог, программисты наконец-то увидели перспективу в DirectX. Многие посчитали, что API от Microsoft на самом деле может стать будущим геймдева. Почему? Все потому, что программировать с помощью DirectX можно было с помощью обычного компьютера, в то время как для девелопмента под OpenGL необходима была рабочая станция. Вслед за NVIDIA свой взор на DirectX перенесла и ATI.
С выходом версии 8.1 API от Microsoft стал по-настоящему мультиплатформенным. Это произошло благодаря выходу первого поколения игровой консоли Xbox. Девелоперы получили специальный набор инструментов для платформ PC и Xbox, который значительно облегчил жизнь кроссплатформенным разработчикам. Конечно, была и обратная сторона медали: игрушки, написанные под Xbox и затем портированные на ПК, были зачастую неиграбельны из-за плохого управления.
С появлением DirectX 9.0 Microsoft лишь упрочила свои лидирующие позиции. Большинство разработчиков приняли девятое поколение API с распростертыми объятиями, а NVIDIA и ATI сконцентрировались на доработке драйверов для лучшей производительности рендеринга DirectX-приложений.
Far Cry и DirectX 9.0
Что касается технологических новшеств, то девятая итерация DirectX получила поддержку шейдерного языка высокого уровня HLSL (High Level Shader Language). Он не являлся обязательным, поэтому программисты могли самостоятельно писать низкоуровневый код для достижения максимальной производительности. Сами же пиксельные и вершинные шейдеры были обновлены до версии 2.0. Кроме этого, DirectX 9.0 получил поддержку технологии Multiple Render Targets (MRT), которая обеспечила одновременный рендеринг сразу в несколько цветовых буферов, а не в один, как было раньше. Также была добавлена поддержка технологии MET (Multiple-Element Textures) и стенсил-буфера (Stencil-buffer), который использовался при создании таких спецэффектов, как тени и отражения.
После выпуска девятой версии Microsoft не слишком торопилась с разработкой следующего поколения API. Если раньше каждая новая итерация DirectX выходила практически ежегодно, то теперь компания сделала ставку на плановые обновления. Поэтому в течение двух следующих лет свет увидели лишь дополнения DirectX 9.0 с литерами a, b и c. Основными их улучшениями были обновленные пиксельные и вершинные шейдеры. Так, DirectX 9.0a/b поддерживали Shader Model 2.0a/b соответственно, а самое крупное обновление — DirectX 9.0c — могло похвастаться не только Shader Model версии 3.0, но и поддержкой игровой консоли нового поколения Xbox 360.
DirectX 9.0c в стелс-экшене Splinter Cell
Удивительно, но DirectX 9.0c смог задержаться в компьютерах надолго. Виной всему — просчет Microsoft при выходе DirectX 10.
Неверный ход. DirectX 10
Следующее поколение DirectX было выпущено в ноябре 2006 года. Новый API поставлялся вместе с операционной системой Windows Vista, которая появилась в том же месяце. Состав DirectX претерпел некоторые изменения. Несколько компонентов были заменены. Так, DirectInput, отвечающий за обработку данных, поступающих с манипуляторов, уступил место пакету XInput, а DirectSound был упразднен в пользу системы Cross-Platform Audio Creation Tool (XACT), которая лишилась аппаратного ускорения аудио, поскольку рендеринг аудио в Windows Vista осуществлялся непосредственно на CPU.
Что касается нововведений, которые получил DirectX 10, в первую очередь нужно отметить новую версию шейдеров Shader Model 4.0, которая получила новые целочисленные инструкции и битовые операции. Кроме этого, добавилась поддержка дополнительных шейдеров, что позволило генерировать сложную геометрию полностью с помощью видеокарты. Подвергся изменениям и шейдерный компилятор HLSL, также получивший версию 4.0. Для улучшения производительности API было снижено число обрабатываемых команд на кадр, а также уменьшено время вызова функций. Был реализован и потоковый ввод/вывод, который позволил записывать результат работы вершинных и геометрических шейдеров напрямую в память.
Скриншот из игры Assassin’s Creed в режиме DirectX 10
Главным просчетом Microsoft было то, что DirectX 10 работал исключительно в операционной системе Windows Vista, вместе с которой он и был выпущен. Если раньше API Microsoft имел обратную совместимость с предыдущими версиями Windows, то теперь он был ее лишен. В итоге большинство игр разрабатывались в первую очередь с прицелом на DirectX 9.0c и операционную систему Windows XP, а поддержка DirectX 10 была лишь бонусом. По такому принципу разрабатывались, например, шутер Hellgate: London или стратегия Company of Heroes. Свою роль в провале DirectX 10 сыграло и то, что сама Windows Vista оказалась, пожалуй, самой неудачной «осью» в истории Windows.
В 2008 году Microsoft анонсировала обновление с индексом 10.1, которое стало доступно вместе с выходом Windows Vista SP1. Несмотря на то что DirectX 10.1 был всего лишь небольшим дополнением к API с индексом 10, он не поддерживался выпущенным на тот момент железом. Для DirectX 10.1 были необходимы новые видеокарты, которые, в свою очередь, сохраняли обратную совместимость с DirectX 10. В обновленном API были улучшены некоторые «фичи». Например, была обновлена шейдерная модель до версии 4.1, стали доступны независимые режимы блендинга для MRT и массивы кубических карт (cube map arrays). А несколько опциональных возможностей DirectX 10 стали обязательными в версии 10.1: например, 32-битная фильтрация и MSAA как минимум с четырьмя выборками (4x MSAA).
Сравнение DX9 с DX10
Работа над ошибками. DirectX 11
Выхода следующей версии API пришлось ждать почти два года. DirectX 11 был анонсирован еще на выставке Gamefest в 2008 году, но официальный релиз состоялся осенью 2009 года вместе с операционной системой Windows 7. Microsoft усвоила урок десятой версии API, поэтому 11-я итерация работала как с новой Windows 7, так и с Windows Vista.
Что касается новых возможностей, то в DirectX 11 в очередной раз была обновлена шейдерная модель, теперь до версии 5.0. Кроме этого, была улучшена производительность API в системах с многоядерными центральными процессорами. Все предыдущие версии разрабатывались с прицелом на одноядерные CPU. В конце концов, это стало своего рода бутылочным горлышком в производительности DirectX. Также в конвейер был добавлен вычислительный шейдер (Compute Shader) для поддержки программирования под задачи общего назначения. К примеру, всем известное быстрое преобразование Фурье работает через DirectX 11 намного быстрее, чем с помощью ранее применявшихся методов. Разработчики Microsoft также уделили внимание сжатию текстур, поэтому алгоритмы были значительно улучшены. Кстати, максимальный размер текстур также был увеличен с 4К до 16К. Но самым большим нововведением DirectX 11 стала поддержка тесселяции и переработанный конвейер визуализации, который был дополнен тремя новыми стадиями: hull-шейдером, domain-шейдером и непосредственно стадией тесселяции.
Суть тесселяции состоит в том, что по мере приближения низко детализированного объекта количество треугольников в его изображении экспоненциально увеличивается для получения более реалистичной и качественной картинки. Преимуществом метода является то, что среднее количество обрабатываемых треугольников всегда примерно одинаково, благодаря чему не происходят провалы в производительности. Особенно это актуально для игровых приставок, где изначально возможности железа ограничены.
Скриншот из шутера Crysis 2. Потрясающего качества картинки удалось достичь с помощью DirectX 11
Новшества, которые получил DirectX 11.1, вышедший в августе 2012 года для операционной системы Windows 8, были больше ориентированы на разработчиков, нежели на геймеров. Были добавлены новые команды копирования, защита от переполнения буфера, проверка на поддержку функций DirectX 11.1 со стороны видеочипов, а также отслеживание вычислений в шейдере. Вдобавок ко всему, в API была добавлена поддержка стереоскопического рендеринга. То есть отныне все игры, написанные с использованием DirectX 11.1, по умолчанию поддерживали трехмерный режим.
С выходом операционной системы Windows 8.1 DirectX также был обновлен до версии 11.2. Основными его улучшениями стали поддержка аппаратных оверлеев, компиляция и линковка шейдеров HLSL в рантайме, отображаемые в память буферы, API снижения задержек ввода и тайловые ресурсы. Среди этих возможностей, прежде всего, стоит выделить поддержку аппаратного оверлея. Он позволяет осуществлять рендер в буфер с низким разрешением, а затем увеличивать это изображение до необходимого размера и смешивать его с дополнительными буферами. Игра может отображать 3D-сцену в первом оверлее со сниженным качеством, но при этом другие графические элементы приложения могут отображаться с высоким качеством. К слову, оверлей может быть как статическим, так и динамическим. При статическом оверлее уровень масштабирования устанавливается при инициализации буфера и в дальнейшем не изменяется. В случае же использования динамического оверлея качество картинки может моментально изменяться без ущерба для производительности. В некоторых ситуациях это помогает избежать сильного падения производительности.
DirectX 11.3 и 12
На сегодняшний день DirectX 11.2 является самой свежей версией API от Microsoft. Что же ждет нас в ближайшем будущем? На эту осень запланирован запуск операционной системы Windows 10, а вместе с ней и DirectX 12. Главным отличием нового API от всех его предшественников стало снижение уровня абстрагирования оборудования. DirectX 12 предоставит иную модель программирования. Как говорят в Microsoft, приближенную к железу (closer to the metal). Используя такую модель, разработчики получат более широкий доступ к различным возможностям графического чипа. Кроме этого, DirectX 12 теперь поддерживает объекты состояния конвейера (PSO, pipeline-state object) и таблицы дескрипторов. Наконец, API получил новые возможности для конвейера рендеринга, которые значительно увеличивают производительность в таких алгоритмах, как определение коллизий, расчет прозрачности или геометрическая отбраковка.