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

Компоненты DirectX Практически все части DirectX API представляют собой наборы COM-совместимых объектов.

В целом, DirectX подразделяется на: DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся на: DirectDraw: интерфейс вывода растровой графики (его разработка давно прекращена); Direct3D (D3D): интерфейс вывода трёхмерных примитивов. : интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и прочих игровых контроллеров. DirectPlay: интерфейс сетевой коммуникации игр. DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave) : интерфейс воспроизведения музыки в форматах Microsoft. DirectShow: интерфейс, используемый для ввода/вывода аудио- и/или видеоданных. DirectX Instruments — технология, позволяющая на основе мультимедийного API DirectX создавать и использовать программные синтезаторы. В отличие от DX-плагинов, такие программы могут полностью управляться по MIDI и служат главным образом не для обработки, а для синтеза звука. Технология DXi была популярна в 2001—2004 гг., особенно в программных продуктах Cakewalk, но со временем проиграла «войну форматов» технологии VST от Steinberg. DirectSetup: часть, ответственная за установку DirectX. DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, кодировщики/декодировщики) Direct2D: интерфейс вывода двухмерной графики

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

В 1994 году Microsoft была практически готова выпустить следующую версию Windows — Windows 95. Главным фактором, определяющим, насколько популярна будет новая ОС, являлся набор программ, которые можно будет запускать под её управлением. В Microsoft пришли к выводу, что, пока разработчики видят DOS более подходящей для написания игровых приложений, коммерческий успех новой ОС весьма сомнителен.

DOS позволяла разработчику получить прямой доступ к видеокарте, клавиатуре/мыши/джойстику и прочим частям системы, в то время как Windows 95, с её защищённой моделью памяти, предоставляла более стандартизованный, но в то же время весьма ограниченный и накладный доступ к устройствам. Microsoft нуждалась в новом способе дать разработчику всё, что ему необходимо. Айслер (Eisler), Сэйнт Джон (St. John) и Энгстром (Engstrom) решили эту проблему, назвав само решение DirectX.

Первый релиз DirectX был выпущен в сентябре 1995 года под названием «Windows Game SDK».

Ещё до появления DirectX Microsoft включила OpenGL в ОС Windows NT. Direct3D позиционировался как замена OpenGL в игровой сфере. Отсюда берёт своё начало «священная война» между сторонниками кросс-платформенной OpenGL и доступной лишь в Windows (в том числе Windows NT) Direct3D. Так или иначе, остальные части DirectX очень часто комбинируются с OpenGL в компьютерных играх, так как OpenGL как таковой не подразумевает функциональности уровня DirectX (например, доступа к клавиатуре/джойстику/мыши, поддержки звука, игр по сети и т. д.).

DirectX является базой для Xbox API. Xbox API схож с DirectX 8.1, но обновление версии, как и на других консолях того времени, невозможно.

В 2002 году Microsoft выпустила DirectX 9 с улучшенной и расширенной поддержкой шейдеров. С 2002 года DirectX неоднократно обновлялся. В августе 2004 года в DirectX была добавлена поддержка шейдеров версии 3.0 (DirectX 9.0c).

В апреле 2005 интерфейс DirectShow был перемещён в Microsoft Platform SDK.

Хронология версий DirectX +Версия DirectX Логотип Номер версии Операционная система Ключевые особенностиДата релиза DirectX 1.0 4.02.0095 Windows 95a 30 сентября 1995 DirectX 2.0 / 2.0a

4.03.00.1096 Windows 95 OSR 2 и Windows NT младше 4.0 Direct3D5 июня 1996 DirectX 3.0 / 3.0a

4.04.0068 / 69 Windows 95 OSR 2.5 и Windows NT 4.0 SP3 последняя официально поддерживаемая версия DirectX для Windows NT 4.0 15 сентября 1996 DirectX 4.0

4.05.00.0155 (RC55) Доступен как бета для Windows NT 4.0 16 июля 1997 DirectX 5.0

4.05.01.1721 / 1998 Windows 98 5 мая 1998 DirectX 6.0

4.06.00.0318 (RC3) Windows 98 SEпоследняя поддерживаемая версия DirectX Media для Windows NT 4.0, а также данная версия DirectX была в Dreamcast мультитекстурирование7 августа 1998 DirectX 6.1

4.06.02.0436 (RC0) Windows 95/98/98SE 3 февраля 1999DirectX 6.25.00.2516.1900 (unofficial patch)Windows NT/98SE/98/2000/ME21 августа 1999 DirectX 7.0 4.07.00.0700 (RC1) Windows 2000 и Windows ME аппаратная поддержка преобразований, обрезания и освещения (T&L)22 сентября 1999 DirectX 7.0a

4.07.00.0716 (RC1) Windows 95/98/98SE/2000 17 декабря 1999 DirectX 8.0 4.08.00.0400 (RC10) Windows 95/98/98SE/2000/ME шейдерная модель 1.112 ноября 2000 DirectX 8.0a

4.08.00.0400 (RC14) Последняя поддерживаемая версия DirectX для Windows 95 5 февраля 2001DirectX 8.1 4.08.01.0810Windows XP/XP SP1пиксельные шейдеры 1.4 и вершинные шейдеры 1.125 октября 2001 4.08.01.0881 (RC7) Windows 98/98SE/2000/ME 8 ноября 2001 DirectX 8.1b

4.08.01.0901

25 июня 2002 DirectX 8.2

4.08.02.0134 (4.09.00.0134)

27 сентября 2002 DirectX 9.0 4.09.0000.0900 Windows Server 2003 шейдерная модель 2.024 декабря 2002 DirectX 9.0a

4.09.0000.0901

26 марта 2003 DirectX 9.0b

4.09.0000.0902 (RC2)

пиксельные шейдеры 2.0b и вершинные шейдеры 2.013 августа 2003 DirectX 9.0c

4.09.0000.0904 (RC0) Windows XP SP2последняя поддерживаемая версия DirectX для Windows 98SE и Windows Me шейдерная модель 3.09 августа 2004 DirectX 9.0L

4.09.0000.0905 (?) Предоставляет дополнительные интерфейсы IDirect3D9Ex и IDirect3DDevice9Ex с функциональностью, доступной лишь через LDDM-драйверы ОС Windows Vista. версия DirectX 9.0 для Windows Vista и выше DirectX 10 6.0.6000.16386 Windows Vista (включён в ее состав) шейдерная модель 4.0 10 ноября 2006 DirectX 10.1 6.00.6001.18000 Windows Vista SP1, Windows Server 2008 шейдерная модель 4.14 февраля 2008 DirectX 11 6.01.7600.16385 Windows 7 (включён в ее состав), Windows Server 2008 R2 шейдерная модель 5.0 22 октября 2009 6.00.6002.18107 Windows Vista SP2 и Windows Server 2008 SP2 через Platform Update for Windows Vista and Windows Server 2008 27 октября 2009 6.01.7601.17514 Windows 7 SP1, Windows Server 2008 R2 SP1 16 февраля 2011 DirectX 11.1 6.02.9200.16384 Windows 7 SP1, Windows 8 (включён в ее составНовые возможности Direct3D 11.1 / Хабрахабр ), Windows RT, Windows Server 2012 1 августа 2012 DirectX 11.2 6.03.9600.16384 Windows 8.1 (включён в ее состав), Windows RT, Windows Server 2012 R2 18 октября 2013 DirectX 11.3 Windows 10 (включён в ее состав) шейдерная модель 5.129 июля 2015 DirectX 12 10.00.10240.16384 Windows 10 (включён в ее состав), Xbox One, Xbox Series X 29 июля 2015 DirectX 12.1 10.00.17763.0001 Windows 10 поддержка DirectX Raytracing 2 октября 2018 DirectX 12.2 10.00.19041.0928 Windows 10, Ultimate 10 ноября 2020

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

Поддерживаемые операционные системы: Windows 95/98/98 SE/ME; Windows NT 4.0, Windows 2000, Windows 2000 Advanced Server, Windows 2000 Professional Edition, Windows 2000 Server, Windows 2000 Service Pack 2, Windows 2000 Service Pack 3, Windows 2000 Service Pack 4; Windows Server 2003, Windows Server 2003 Service Pack 1, Windows Server 2003 Datacenter x64 Edition, Windows Server 2003 Enterprise x64 Edition, Windows Server 2003 Standard x64 Edition, Windows Small Business Server 2003; Windows XP, Windows XP 64-bit, Windows XP Home Edition, Windows XP Media Center Edition, Windows XP Professional Edition, Windows XP Service Pack 1, Windows XP Service Pack 2, Windows XP Service Pack 3, Windows XP Starter Edition, Windows XP Tablet PC Edition; Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11; Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2016.

Библиотеки-обёртки В случае возникновения различных проблем при использовании устаревших приложений и игр можно воспользоваться специальной библиотекой-обёрткой (wrapper).

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

dgVoodoo2 — враппер для запуска устаревших игр на основе DirectX 1-7 и так же 8-9 в DirectX 11 с уровнем функций 10/10.1 или через WARP. В первую очередь использовался для запуска Glide-игр, но позже была добавлена поддержка DirectX. dxwrapper — обертка для запуска DirectX 1-8 в DirectX 9. D9VK — обертка для использования DirectX 9 игр и приложений под Vulkan без необходимости их переписывать. DXVK — обертка для использования DirectX 8/9/10/11 игр и приложений через Vulkan. VKD3D — обертка для запуска DirectX 12 игр и приложений через Vulkan. WineD3D — обертка для запуска приложений и игр DirectX 1-11 через OpenGL.

См. также GDI OpenGL Vulkan (API) Mantle (API) (от AMD) Simple DirectMedia Layer X (DirectX) — формат файла для хранения 3D-объектов, разработанный Microsoft для DirectX Direct3D 10 Direct3D 11 Direct3D 12

Примечания

Литература

Ссылки DirectX End-User Runtimes (June 2010)

Категория:API Категория:Windows API Категория:Графические библиотеки Категория:Библиотеки трёхмерной графики