DirectX (от англ. direct — прямой, непосредственный, произносится как «ДиректИкс» («ДайректЭкс»)) — это набор API. разработанных для решения задач, связанных с программированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Microsoft Windows бесплатно доступен на сайте Microsoft. Зачастую обновлённые версии DirectX поставляются вместе с игровыми приложениями.
Компоненты DirectX
Практически все части DirectX API представляют собой наборы COM - совместимых объектов.
В целом, DirectX подразделяется на:
- DirectX Graphics. набор интерфейсов, ранее (до версии 8.0) делившихся на:
- DirectDraw: интерфейс вывода растровой графики. (Его разработка давно прекращена)
- Direct3D (D3D): интерфейс вывода трёхмерных примитивов.
- DirectInput. интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров.
- DirectPlay. интерфейс сетевой коммуникации игр.
- DirectSound. интерфейс низкоуровневой работы со звуком (формата Wave)
- DirectMusic. интерфейс воспроизведения музыки в форматах 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).