Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Microsoft DirectX - это набор интерфейсов прикладного программирования (API) для обработки задач, связанных с мультимедиа , особенно с программированием игр и видео, на платформах Microsoft . Первоначально все названия этих API-интерфейсов начинались с «Direct», например Direct3D , DirectDraw , DirectMusic , DirectPlay , DirectSound и т. Д. Название DirectX было придумано как сокращение для всех этих API ( Xвместо конкретных имен API) и вскоре стал названием коллекции. Когда Microsoft позже решила разработать игровую консоль, X использовался в качестве основы для названия Xbox, чтобы указать, что консоль основана на технологии DirectX. [2] Первоначальный X был перенесен в именование API-интерфейсов, разработанных для Xbox, таких как XInput и Cross- Platform Audio Creation Tool (XACT), в то время как шаблон DirectX был продолжен для Windows API, таких как Direct2D и DirectWrite .

Direct3D (API трехмерной графики в DirectX) широко используется при разработке видеоигр для Microsoft Windows и линейки консолей Xbox . Direct3D также используется другими программными приложениями для задач визуализации и графики, таких как проектирование CAD / CAM. Поскольку Direct3D является наиболее широко разрекламированным компонентом DirectX, часто встречаются взаимозаменяемые названия «DirectX» и «Direct3D».

Комплект разработки программного обеспечения DirectX (SDK) состоит из библиотек времени выполнения в распространяемой двоичной форме, а также сопроводительной документации и заголовков для использования при кодировании. Первоначально среды выполнения устанавливались только играми или явно пользователем. Windows 95 не запускалась с DirectX, но DirectX был включен в Windows 95 OEM Service Release 2. [3] Windows 98 и Windows NT 4.0оба поставлялись с DirectX, как и все версии Windows, выпущенные с тех пор. SDK доступен для бесплатной загрузки. Хотя среды выполнения являются проприетарным программным обеспечением с закрытым исходным кодом, исходный код предоставляется для большинства образцов SDK. Начиная с выпуска Windows 8 Developer Preview, DirectX SDK был интегрирован в Windows SDK. [4]

История развития [ править ]

В конце 1994 года Microsoft была готова выпустить Windows 95 , свою следующую операционную систему . Важным фактором, определяющим ценность, которую будут придавать потребители, были программы, которые на нем можно было бы запускать. Сотрудник Microsoft Алекс Сент-Джон обсуждал с различными разработчиками игр вопрос о том, насколько вероятно, что они перенесут свои игры для MS-DOS в Windows 95, и нашел ответы в основном отрицательными; программисты сочли, что среда Windows более трудна для разработки по сравнению с MS-DOS или другими игровыми платформами. Также были сильные опасения по поводу совместимости; примечательным примером этого был выпуск Windows 95 The Lion King, основанный на WinG.интерфейс программирования наряду с версиями для игровых консолей. Из-за множества несовместимых графических драйверов от новых компьютеров Compaq , которые не тестировались с интерфейсом WinG, игра так часто вылетала на многих настольных системах, что родители переполняли службы поддержки Disney . [5] [6]

Сент-Джон осознал, что сопротивление разработке игр под Windows будет ограничением, и нанял еще двух инженеров, Крейга Эйслера и Эрика Энгстрома , чтобы разработать лучшее решение, которое позволит большему количеству программистов разрабатывать игры для Windows. Проект получил кодовое название «Манхэттенский проект», поскольку в отношении одноименного проекта времен Второй мировой войны идея заключалась в замене разработанных в Японии игровых консолей персональными компьютерами под управлением операционной системы Microsoft. [5] Первоначально компания использовала символ радиации в качестве логотипа, но Microsoft попросила команду изменить логотип. [5]Руководство не согласилось с проектом, поскольку они уже списали Windows как игровую платформу, но все трое взяли на себя обязательства по развитию этого проекта. [6] Их бунтарский характер привел к тому, что Брэд Сильверберг , старший вице-президент по офисным продуктам Microsoft, назвал трио «Beastie Boys». [7]

Большая часть работы этих троих была проделана среди других назначенных проектов, начиная с конца 1994 года. [6] В течение четырех месяцев и при участии нескольких производителей оборудования команда разработала первый набор интерфейсов прикладного программирования (API), который они представлен на конференции разработчиков игр 1995 года . [6] SDK включал библиотеки, такие как DirectDraw для графических программ, DirectSound для аудио и DirectPlay для сетевых коммуникаций. «Прямая» часть библиотеки была названа, поскольку эти процедуры обычно обходили основные процедуры Windows 95 и напрямую обращались к аппаратному обеспечению компьютера. Хотя команда назвала его "Game SDK" ( комплект для разработки программного обеспечения), название «DirectX» пришло от одного журналиста, который высмеивал схему именования различных библиотек. Команда решила продолжить использовать эту схему именования и назвать проект DirectX. [5]

Первая версия DirectX была выпущена в сентябре 1995 года как Windows Games SDK. Это была замена Win32 для API DCI [8] и WinG для Windows 3.1 . DirectX позволял всем версиям Microsoft Windows, начиная с Windows 95, включать высокопроизводительные мультимедиа. Эйслер написал в своем блоге об безумном стремлении создать DirectX 1–5. [9]

Чтобы получить больше разработчиков на борту DirectX, Microsoft подошел ID Software «s Джон Кармак и предложил порт Гибели и Doom 2 из MS-DOS в DirectX, бесплатно, с идентификатором сохраняя все издательские права на игру. Кармак согласился, и Гейб Ньюэлл из Microsoft возглавил проект по переносу. Первая игра была выпущена как Doom 95 в августе 1996 года, первая опубликованная игра DirectX. Microsoft активно продвигала игру, и Билл Гейтс появлялся в рекламе этой игры. [5]

DirectX 2.0 стал компонентом самой Windows с выпуском Windows 95 OSR2 и Windows NT 4.0 в середине 1996 года. Поскольку сама Windows 95 была еще новой и для нее было выпущено мало игр, Microsoft активно продвигала DirectX среди разработчиков, которые в целом не доверяли способности Microsoft создать игровую платформу на Windows. Алекс Сент-Джон, проповедник DirectX, устроил тщательно продуманное мероприятие на конференции разработчиков компьютерных игр 1996 года, которую разработчик игр Джей Барсон описал как римскую тему, включая настоящих львов , тоги и что-то напоминающее карнавал в помещении. [10] Именно на этом мероприятии Microsoft впервые представила Direct3D.и DirectPlay , а также продемонстрировал многопользовательский режим MechWarrior 2, в который играют через Интернет.

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

До DirectX Microsoft включала OpenGL в свою платформу Windows NT . [11] В то время OpenGL требовал "высококлассного" оборудования и был ориентирован на разработку и использование САПР . [ необходима цитата ]Direct3D задумывался как контролируемая Microsoft альтернатива OpenGL, изначально ориентированная на использование в играх. По мере роста 3D-игр OpenGL был разработан, чтобы включить лучшую поддержку методов программирования для интерактивных мультимедийных приложений, таких как игры, предоставляя разработчикам выбор между использованием OpenGL или Direct3D в качестве API 3D-графики для своих приложений. С этого момента началась «битва» между сторонниками кроссплатформенного OpenGL и Direct3D только для Windows. Между прочим, OpenGL поддерживался в Microsoft командой DirectX. Если разработчик решил использовать API трехмерной графики OpenGL, другие API-интерфейсы DirectX часто объединяются с OpenGL в компьютерных играх, поскольку OpenGL не включает в себя все функции DirectX (например, поддержку звука или джойстика).

В версии для консоли DirectX использовался в качестве основы для консольных API Microsoft Xbox , Xbox 360 и Xbox One . API был разработан совместно Microsoft и Nvidia , которая разработала специальное графическое оборудование, используемое в оригинальной Xbox. Xbox API был похож на DirectX версии 8.1, но не подлежал обновлению, как и другие консольные технологии. Кодовое название Xbox было DirectXbox, но было сокращено до Xbox из-за его коммерческого названия. [12]

В 2002 году Microsoft выпустила DirectX 9 с поддержкой использования гораздо более длинных шейдерных программ, чем раньше, с пиксельными и вершинными шейдерами версии 2.0. С тех пор Microsoft продолжала обновлять пакет DirectX, представив Shader Model 3.0 в DirectX 9.0c, выпущенном в августе 2004 года.

В апреле 2005 года DirectShow был удален из DirectX и вместо этого перемещен в Microsoft Platform SDK .

Было подтверждено присутствие DirectX в Microsoft Windows Phone 8 . [13]

Трассировка лучей в реальном времени была объявлена ​​как DXR в 2018 году.

Логотипы [ править ]

Оригинальный логотип напоминал деформированный предупреждающий знак радиации . Как ни странно, первоначальное название проекта DirectX было «Манхэттенский проект», отсылка к инициативе США по созданию ядерного оружия . Алекс Сент-Джон , глава евангелизации Microsoft DirectX в то время, утверждает [14], что коннотация конечного результата Манхэттенского проекта ( ядерной бомбардировки Японии ) является преднамеренной, и что DirectX и его родственный проект Xbox ( с похожим логотипом), были призваны вытеснить японских производителей видеоигр с их доминирующего положения в индустрии видеоигр . [15]Однако Microsoft публично отрицает эту учетную запись, вместо этого заявляя, что логотип является просто художественным дизайном. [15]

  • DirectX 1.0–8.2

  • DirectX 9.0–12

Компоненты [ править ]

DirectX состоит из нескольких API:

  • Direct3D (D3D): API-интерфейс 3D-рендеринга в реальном времени
  • DXGI : перечисляет адаптеры и мониторы, а также управляет цепочками подкачки для Direct3D 10 и более поздних версий .
  • Direct2D : API 2D-графики
  • DirectWrite : API отрисовки текста
  • DirectCompute : API для универсальных вычислений на графических процессорах
  • Диагностика DirectX (DxDiag): инструмент для диагностики и создания отчетов о компонентах, связанных с DirectX, таких как аудио, видео и драйверы ввода.
  • XACT3 : API аудио высокого уровня
  • XAudio2 : API низкоуровневого аудио
  • DirectX Raytracing ( DXR ): API трассировки лучей в реальном времени
  • DirectStorage : API-интерфейс ввода-вывода файлов, ориентированный на графический процессор
  • DirectML : API машинного обучения и искусственного интеллекта с ускорением на GPU

Microsoft исключила следующие компоненты:

  • DirectX Media : состоит из:
    • DirectAnimation для 2D / 3D [16] веб-анимации, DirectShow для воспроизведения мультимедиа и потоковой передачи мультимедиа.
    • Медиа-объекты DirectX: поддержка потоковых объектов, таких как кодеры, декодеры и эффекты (устарело в пользу преобразований Media Foundation ; MFT) [17]
    • DirectX Transform для веб-интерактивности и режим Direct3D Retained Mode для трехмерной графики более высокого уровня
    • Плагины DirectX для обработки аудиосигнала
    • DirectX Video Acceleration для ускоренного воспроизведения видео (устарело в пользу Media Foundation )
  • DirectDraw : API 2D-графики (устарело в пользу Direct2D )
  • DirectInput : API ввода для взаимодействия с клавиатурами , мышами , джойстиками и игровыми контроллерами (устарело после версии 8 в пользу XInput для контроллеров Xbox 360 или стандартной обработки сообщений окна WM_INPUT для ввода с клавиатуры и мыши)
  • DirectPlay : сетевой API для связи по локальной или глобальной сети (устарело после версии 8 в пользу Games for Windows Live и Xbox Live )
  • DirectSound : Audio API (устарело с DirectX 8 в пользу XAudio2 и XACT3)
  • DirectSound3D (DS3D): API трехмерных звуков (устарело с DirectX 8 в пользу XAudio2 и XACT3)
  • DirectMusic : компоненты для воспроизведения саундтреков, созданные в DirectMusic Producer (устарело с DirectX 8 в пользу XAudio2 и XACT3)

Функциональность DirectX предоставляется в виде объектов и интерфейсов в стиле COM . Кроме того, управляемые объекты , хотя и не являются самими компонентами DirectX, были созданы поверх некоторых частей DirectX, таких как Managed Direct3D [18] и графическая библиотека XNA [19] поверх Direct3D 9.

Microsoft распространяет инструмент отладки для DirectX под названием «PIX». [20]

Версии [ править ]

DirectX 9 [ править ]

DirectX 9 был выпущен в 2002 году для Windows 98 и XP и в настоящее время поддерживается всеми последующими версиями. Microsoft продолжает вносить изменения в DirectX 9.0c, в результате чего прекращается поддержка некоторых из вышеупомянутых операционных систем. С января 2007 года требуется Windows 2000 или XP. Также была представлена ​​Shader Model 2.0, содержащая Pixel Shader 2.0 и Vertex Shader 2.0. Windows XP SP2 и новее включают DirectX 9.0c, [21], но может потребоваться более новая распространяемая установка среды выполнения DirectX для приложений DirectX 9.0c, скомпилированных с помощью DirectX 9.0 SDK за февраль 2005 г. или новее.

DirectX 10 [ править ]

Надпись с логотипом Microsoft DirectX 10

DirectX 10 - это крупное обновление для DirectX API, которое поставляется с Windows Vista и более поздними версиями и доступна только с ними ; предыдущие версии Windows, такие как Windows XP, не могут запускать эксклюзивные приложения DirectX 10. Скорее, программы, которые запускаются в системе Windows XP с оборудованием DirectX 10, просто прибегают к пути кода DirectX 9.0c, последней версии, доступной для компьютеров с Windows XP. [22]

Изменения для DirectX 10 были обширными. Многие бывшие части DirectX API были объявлены устаревшими в последней версии DirectX SDK и сохранены только для совместимости: DirectInput был объявлен устаревшим в пользу XInput , DirectSound был объявлен устаревшим в пользу Cross-платформенной системы Audio Creation Tool (XACT) и дополнительно потеряна поддержка аудио с аппаратным ускорением, поскольку звуковой стек Vista воспроизводит звук программно на ЦП. DirectPlay DPLAY.DLL также был удален и заменен на dplayx.dll; игры, использующие эту DLL, должны продублировать ее и переименовать в dplay.dll.

Для обеспечения обратной совместимости DirectX в Windows Vista содержит несколько версий Direct3D: [23]

  • Direct3D 9 : имитирует поведение Direct3D 9, как это было в Windows XP. Подробности и преимущества модели драйвера дисплея Windows Vista скрыты от приложения, если установлены драйверы WDDM. Это единственный доступный API, если установлены только графические драйверы XP (XDDM), например, после обновления до Vista.
  • Direct3D 9Ex (во время разработки Windows Vista известный как 9.0L или 9.L): обеспечивает полный доступ к новым возможностям WDDM (если установлены драйверы WDDM) при сохранении совместимости с существующими приложениями Direct3D. Windows Aero пользовательский интерфейс основан на D3D 9EX.
  • Direct3D 10 : разработан на основе новой модели драйвера в Windows Vista и содержит ряд улучшений возможностей и гибкости рендеринга, включая Shader Model 4 .

Direct3D 10.1 - это инкрементное обновление Direct3D 10.0, которое поставляется с Windows Vista Service Pack 1 и требует его . [24] Этот выпуск в основном устанавливает еще несколько стандартов качества изображения для поставщиков графики, предоставляя разработчикам больше контроля над качеством изображения. [25] Он также добавляет поддержку массивов кубических карт, отдельные режимы наложения для каждого MRT, экспорт маски покрытия из пиксельного шейдера, возможность запускать пиксельный шейдер для каждой выборки, доступ к мультидискретным буферам глубины [26] и требует, чтобы видео карта поддерживает Shader Model 4.1 или выше и 32-битные операции с плавающей запятой. Direct3D 10.1 по-прежнему полностью поддерживает оборудование Direct3D 10, но для использования всех новых функций требуется обновленное оборудование. [27]

DirectX 11 [ править ]

Надпись с логотипом Microsoft DirectX 11

Microsoft представила DirectX 11 на мероприятии Gamefest 08 в Сиэтле с основными запланированными функциями, включая поддержку GPGPU ( DirectCompute ), и Direct3D 11 с поддержкой тесселяции [28] [29] и улучшенной поддержкой многопоточности, чтобы помочь разработчикам видеоигр в разработке игр. которые лучше используют многоядерные процессоры. [30] Direct3D 11 работает в Windows Vista, Windows 7, Windows 8 и Windows 10. Части нового API, такие как многопоточная обработка ресурсов, могут поддерживаться на оборудовании класса Direct3D 9/10 / 10.1. Для аппаратной тесселяции и Shader Model 5.0 требуется оборудование с поддержкой Direct3D 11. [31]С тех пор Microsoft выпустила техническую предварительную версию Direct3D 11. [32] Direct3D 11 - это строгий надмножество Direct3D 10.1 - все аппаратные средства и функции API версии 10.1 сохранены, а новые функции добавляются только при необходимости для раскрытия новых функций. Это помогает сохранить обратную совместимость с предыдущими версиями DirectX.

Microsoft выпустила финальное обновление платформы для Windows Vista 27 октября 2009 г., то есть через 5 дней после первоначального выпуска Windows 7 (запущенного с Direct3D 11 в качестве базового стандарта).

С тех пор было выпущено четыре обновления для DirectX 11:

  • DirectX 11.1 включен в Windows 8 . Он поддерживает WDDM 1.2 для повышения производительности, отличается улучшенной интеграцией Direct2D (теперь в версии 1.1), Direct3D и DirectCompute , а также включает библиотеки DirectXMath, XAudio2 и XInput из платформы XNA. Он также поддерживает стереоскопическое 3D для игр и видео. [33] DirectX 11.1 также был частично перенесен в Windows 7 через обновление платформы Windows 7 . [34] [35]
  • DirectX 11.2 включен в Windows 8.1 (включая версию RT) и Windows Server 2012 R2 . [36] Он добавил некоторые новые функции в Direct2D, такие как реализация геометрии. [37] Он также добавил композицию цепочки подкачки, которая позволяет рендерить некоторые элементы сцены с более низким разрешением, а затем компоновать с помощью аппаратного наложения с другими частями, рендерингом с более высоким разрешением. [38]
  • DirectX 11.X - это расширенный набор DirectX 11.2, работающий на Xbox One . [39] На самом деле он включает в себя некоторые функции, такие как комплекты отрисовки, которые позже были объявлены как часть DirectX 12. [40]
  • DirectX 11.3 был анонсирован вместе с DirectX 12 на GDC и выпущен в 2015 году. Он предназначен для дополнения DirectX 12 в качестве альтернативы более высокого уровня. [41] Он входит в состав Windows 10. [36]

DirectX 12 [ править ]

DirectX 12 был анонсирован Microsoft на GDC 20 марта 2014 года и официально запущен вместе с Windows 10 29 июля 2015 года.

Основной особенностью новой версии DirectX было введение расширенных API-интерфейсов низкоуровневого программирования для Direct3D 12, которые могут снизить накладные расходы на драйверы. Теперь разработчики могут реализовать свои собственные списки команд и буферы для графического процессора, что позволяет более эффективно использовать ресурсы за счет параллельных вычислений . Ведущий разработчик Макс МакМаллен заявил, что главная цель Direct3D 12 - достичь «эффективности консольного уровня на телефоне, планшете и ПК». [42] Выпуск Direct3D 12 сопровождается другими инициативами для графических API с низким уровнем накладных расходов, включая AMD Mantle для видеокарт AMD, Apple Metal для iOS и macOS и Khronos Group.кроссплатформенный Вулкан .

Поддержка нескольких адаптеров будет включена в DirectX 12, что позволит разработчикам одновременно использовать несколько графических процессоров в системе; поддержка нескольких графических процессоров ранее зависела от реализаций поставщиков, таких как AMD CrossFireX или NVIDIA SLI . [43] [44] [45] [46]

  • Неявная поддержка мультиадаптера будет работать аналогично предыдущим версиям DirectX, где кадры поочередно отображаются на связанных графических процессорах с аналогичной вычислительной мощностью.
  • Explicit Multiadapter предоставит разработчикам два различных шаблона API. Связанные графические процессоры позволят DirectX просматривать видеокарты в SLI или CrossFireX как один графический процессор и использовать объединенные ресурсы; в то время как Несвязанные графические процессоры позволят графическим процессорам от разных производителей , которые будут использоваться DirectX, например, дополняющие выделенный GPU с интегрированным GPU на процессоре, или объединениях AMD и NVIDIA карт. Однако сложные смешанные конфигурации с несколькими графическими процессорами требуют значительно более внимательной поддержки со стороны разработчиков.

DirectX 12 поддерживается всеми графическими процессорами Fermi и более поздними версиями Nvidia, микросхемами AMD на базе GCN и графическими блоками процессоров Intel Haswell и более поздних версий. [47]

На SIGGRAPH 2014 Intel выпустила демонстрацию, демонстрирующую компьютерное поле астероидов , в котором DirectX 12, как утверждается, на 50–70% эффективнее DirectX 11 в отношении скорости рендеринга и энергопотребления процессора. [48] [49]

Ashes of the Singularity была первой общедоступной игрой, в которой использовался DirectX 12. Тестирование, проведенное Ars Technica в августе 2015 года, выявило небольшое снижение производительности в режиме DirectX 12 по сравнению с режимом DirectX 11 для Nvidia GeForce 980 Ti , тогда как AMD Radeon R9 290x обеспечила стабильное улучшение производительности до 70% под DirectX 12, а в некоторых сценариях AMD превосходит более мощную Nvidia под DirectX 12. Расхождения в производительности могут быть из-за плохой оптимизации драйверов Nvidia для DirectX 12 или даже из-за аппаратных ограничений карты, которая была оптимизирована для DirectX 11 серийное исполнение; однако точная причина остается неясной. [50]

API DirectX 12 также представлены на Xbox ; однако код DirectX 12 нельзя напрямую переносить между ПК и Xbox One из-за внутренних различий между этими двумя платформами. [51] [52] Улучшение производительности DirectX 12 на Xbox не так существенно, как на ПК. [53]

В марте 2018 года была анонсирована технология DirectX Raytracing (DXR), способная отслеживать лучи в реальном времени на поддерживаемом оборудовании [54], а API DXR был добавлен в обновление Windows 10 за октябрь 2018 года.

В 2019 году Microsoft объявила о появлении DirectX 12 в Windows 7, но только в качестве подключаемого модуля для определенных игр. [55]

DirectX 12 Ultimate [ править ]

Microsoft представила DirectX 12 Ultimate в марте 2020 года. DirectX 12 Ultimate будет объединен с общей библиотекой как на компьютерах с Windows 10, так и на Xbox Series X и других консолях Xbox девятого поколения. Среди новых функций Ultimate - DirectX Raytracing 1.1, Variable Rate Shading, который дает программистам контроль над уровнем детализации затенения в зависимости от выбранного дизайна, Mesh Shaders и Sampler Feedback. [56] [57]

История версий [ править ]

Номер версии, сообщаемый инструментом Microsoft DxDiag (версия 4.09.0000.0900 и выше), использует формат x.xx.xxxx.xxxx для номеров версий. Однако на странице MSDN DirectX и Windows XP утверждается, что реестр всегда был в формате x.xx.xx.xxxx. Поэтому, когда в приведенной выше таблице указана версия как «4.09.00.0904», инструмент Microsoft DxDiag может иметь ее как «4.09.0000.0904». [79]

Совместимость [ править ]

Различные выпуски Windows включают и поддерживают различные версии DirectX, что позволяет более новым версиям операционной системы продолжать работу приложений, разработанных для более ранних версий DirectX, до тех пор, пока эти версии не будут постепенно заменены на новые API, драйверы и оборудование. [80]

API, такие как Direct3D и DirectSound, должны взаимодействовать с оборудованием, и они делают это через драйвер устройства . Производители оборудования должны написать эти драйверы для интерфейса драйвера устройства конкретной версии DirectX (или DDI) и протестировать каждую отдельную часть оборудования, чтобы сделать их совместимыми с DirectX. Некоторые аппаратные устройства имеют только драйверы, совместимые с DirectX (другими словами, для использования этого оборудования необходимо установить DirectX). Ранние версии DirectX включали в себя обновленную библиотеку всех доступных в настоящее время драйверов, совместимых с DirectX. Однако эта практика была прекращена в пользу веб- системы обновления драйверов Центра обновления Windows , которая позволяла пользователям загружать только драйверы, относящиеся к их оборудованию, а не всю библиотеку.

До DirectX 10 среда выполнения DirectX была разработана для обратной совместимости со старыми драйверами, а это означает, что новые версии API были разработаны для взаимодействия со старыми драйверами, написанными для DDI предыдущей версии. Прикладному программисту приходилось запрашивать доступные аппаратные возможности, используя сложную систему «ограничительных битов», каждая из которых привязана к определенной аппаратной функции. Direct3D 7 и более ранние версии будут работать с любой версией DDI, Direct3D 8 требует минимального уровня DDI 6, а Direct3D 9 требует минимального уровня DDI 7. [81] Однако среда выполнения Direct3D 10 в Windows Vista не может работать на старом оборудовании. драйверы из-за значительно обновленного DDI, который требует унифицированного набора функций и отказывается от использования «битов ограничения».

В Direct3D 10.1 представлены « уровни функций » 10_0 и 10_1, которые позволяют использовать только аппаратные функции, определенные в указанной версии Direct3D API. Direct3D 11 добавляет уровень 11_0 и «10 уровень 9» - подмножество API Direct3D 10, разработанное для работы на оборудовании Direct3D 9, которое имеет три уровня функций (9_1, 9_2 и 9_3), сгруппированных по общим возможностям: «низкий», «средний». »и« high-end »видеокарты; среда выполнения напрямую использует Direct3D 9 DDI, предусмотренный во всех драйверах WDDM. Уровень функций 11_1 был представлен в Direct3D 11.1 .

.NET Framework [ править ]

В 2002 году Microsoft выпустила версию DirectX, совместимую с Microsoft .NET Framework , что позволило программистам использовать преимущества функций DirectX из приложений .NET с использованием совместимых языков, таких как управляемый C ++ или язык программирования C # . Этот API был известен как « Управляемый DirectX."(или сокращенно MDX) и утверждал, что работает на 98% производительности базовых API DirectX. В декабре 2005 г., феврале 2006 г., апреле 2006 г. и августе 2006 г. Microsoft выпустила последовательные обновления этой библиотеки, завершившиеся бета-версией. версия под названием Managed DirectX 2.0. В то время как Managed DirectX 2.0 объединил функциональные возможности, которые ранее были распределены по нескольким сборкам, в единую сборку, что упростило зависимости от нее для разработчиков программного обеспечения, разработка этой версии впоследствии была прекращена, и она больше не поддерживается. Срок действия библиотеки Managed DirectX 2.0 истек 5 октября 2006 г.

Во время GDC 2006 Microsoft представила XNA Framework , новую управляемую версию DirectX (похожую, но не идентичную Managed DirectX), которая предназначена для помощи в разработке игр, облегчая интеграцию DirectX, HLSL и других инструментов в один пакет. Он также поддерживает выполнение управляемого кода на Xbox 360. XNA Game Studio Express RTM была доступна 11 декабря 2006 г. в качестве бесплатной загрузки для Windows XP. В отличие от среды выполнения DirectX, управляемый DirectX , XNA Framework или API Xbox 360 (XInput, XACT и т. Д.) Не поставляются как часть Windows. Ожидается, что разработчики будут распространять компоненты среды выполнения вместе со своими играми или приложениями.

Ни один продукт Microsoft, включая последние выпуски XNA, не поддерживает DirectX 10 для .NET Framework.

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

  • SlimDX , библиотека с открытым исходным кодом для программирования DirectX на .NET Framework
  • SharpDX, [82] [83] - проект с открытым исходным кодом, предоставляющий полный DirectX API для .NET на всех платформах Windows, позволяющий разрабатывать высокопроизводительные игры, рендеринг 2D и 3D графики, а также звуковые приложения в реальном времени.
  • DirectShow.NET для подмножества DirectShow
  • Windows API CodePack для .NET Framework , которая представляет собой библиотеку с открытым исходным кодом от Microsoft.

Альтернативы [ править ]

Есть альтернативы семейства DirectX из API - интерфейсов , с OpenGL , его преемник Vulkan , Металл и Мантия , имеющие наиболее особенности сравнимы с Direct3D . Примеры других API включают SDL , Allegro , OpenMAX , OpenML, OpenAL , OpenCL , FMOD , SFML и т. Д. Многие из этих библиотек являются кроссплатформенными или имеют открытые кодовые базы. Существуют также альтернативные реализации, которые стремятся предоставить тот же API, например, в Wine . Кроме того, разработчики ReactOS пытаются заново реализовать DirectX под названием «ReactX».

См. Также [ править ]

  • DxDiag
  • Direct3D
  • Вулкан (API)
  • Простой слой DirectMedia
  • Сравнение OpenGL и Direct3D
  • Интерфейс графического устройства (GDI)
  • Графический конвейер
  • Плагин DirectX
  • ActiveX
  • Обнаружение и восстановление тайм-аута

Ссылки [ править ]

  1. ^ "Технические страницы Dreamcast" . Июнь 1999 г.
  2. ^ «Microsoft: значение Xbox - The Economist» . Экономист .
  3. ^ «Справка по DirectX» . computerhope.com .
  4. ^ "Где находится DirectX SDK?" . microsoft.com . Microsoft.
  5. ^ a b c d e Willetts, Samual (27 июля 2020 г.). «Как DirectX определил компьютерные игры ... с помощью бойца Билла Гейтса» . PC Gamer . Проверено 7 декабря 2020 года .
  6. ^ a b c d Крэддок, Дэвид (14 ноября 2020 г.). «Ставка на черное: как Microsoft и Xbox изменили поп-культуру, часть 1 - глава 8: Сила X» . Shacknews . Проверено 7 декабря 2020 года .
  7. ^ Haggarty, Джеймс (9 декабря 2020). «Microsoft Misfit помогла ведущей компании выйти на игровой рынок» . The Wall Street Journal . Проверено 9 декабря 2020 года .
  8. ^ "54 Что такое DCI?" . stason.org .
  9. ^ Сообщение в блоге Крейга Эйслера об безумии создания DirectX с 1 по 5 на craig.theeislers.com
  10. ^ Джей Barnson (13 июля 2006). «Сказки необузданного койота» . Архивировано из оригинала 17 июля 2006 года.
  11. ^ «Обзор продукта Windows NT 3.51» . Microsoft . 31 октября 2006 года Архивировано из оригинального 29 ноября 2012 года . Проверено 16 сентября 2010 года .
  12. Дж. Аллард, Интервью PC Pro, архивировано 11 октября 2007 г.на Wayback Machine , апрель 2004 г.
  13. ^ «Windows Phone 8 добавляет DirectX, собственную разработку, упрощает перенос приложений» . 20 июня 2012 . Проверено 23 июня 2012 года .
  14. ^ "Интервью с Алексом Сент-Джоном" . 28 марта 2007 . Проверено 31 августа 2011 года .
  15. ^ а б Дэвид Крэддок (март 2007 г.). «Интервью с Алексом Сент-Джоном, страница 2» . Shack News . Архивировано 1 июня 2008 года.
  16. ^ 3D-анимация SPACE FIGHTER от DIRECT ANIMATION [ постоянная мертвая ссылка ]
  17. ^ «Объекты DirectX Media» . DirectShow . Документы Microsoft . 5 июня 2019 г. DMO были заменены Media Foundation Transforms (MFT).
  18. ^ «DirectX 9: Использование API управляемой графики Direct3D в .NET» . microsoft.com . Microsoft.
  19. ^ "Пространство имен Microsoft.Xna.Framework.Graphics" . microsoft.com . Microsoft.
  20. ^ "PIX" .
  21. ^ https://web.archive.org/web/20101018035741/http://msdn.microsoft.com/en-gb/library/ee416979(VS.85).aspx
  22. ^ «Часто задаваемые вопросы о DirectX» . microsoft.com . Microsoft.
  23. ^ Чак Walbourn (август 2009). «Графические API в Windows» . MSDN . Проверено 3 октября 2009 года .
  24. ^ Albanesius, Хлоя (29 августа 2007). «Microsoft выпускает первый пакет обновления для Vista» . Журнал ПК . Проверено 29 августа 2007 года .
  25. ^ «Microsoft представляет подробности DirectX 10.1 на SIGGRAPH» . 7 августа 2007 . Проверено 27 августа 2007 года .
  26. ^ "Learn Network Inspire" (PDF) . AMD. Архивировано из оригинального (PDF) 10 апреля 2012 года . Проверено 30 декабря 2012 года .
  27. ^ «DirectX 10.1 не требует нового графического процессора» . Windows Vista: полное руководство. 5 марта, 2008. Архивировано из оригинального 29 октября 2007 года . Проверено 5 марта 2008 года .
  28. ^ «Что будет дальше с DirectX? Обзор DirectX 11 - Обзор DirectX 11» . Элитные ублюдки. 1 сентября 2008 . Проверено 4 сентября 2008 года .
  29. ^ «DirectX 11: Посмотрите, что нас ждет» . bit-tech.net. 17 сентября 2008 г.
  30. ^ Дата выпуска Windows 7 и D3D 11. Архивировано 9 октября 2011 г. на Wayback Machine.
  31. ^ «Блоги MSDN» . msdn.com . Microsoft.
  32. ^ «Загрузите пакет разработки программного обеспечения DirectX из официального центра загрузки Microsoft» . microsoft.com . Microsoft.
  33. ^ «Руководство по предварительной версии для разработчиков Windows 8» (PDF) . Архивировано из оригинала (PDF) на 7 октября 2011 года.
  34. ^ «Обновление платформы для Windows 7 (Windows)» . Msdn.microsoft.com . Проверено 9 августа 2014 года .
  35. ^ Pooya Eimandar (2013). DirectX 11.1 Программирование игр . Packt Publishing Ltd. стр. 45. ISBN 978-1-84969-481-0.
  36. ^ a b «Как установить последнюю версию DirectX» . Служба поддержки Microsoft . Microsoft . Проверено 27 октября 2017 года .
  37. ^ "Обзор реализаций геометрии" . microsoft.com . Microsoft.
  38. Беннет Сорбо (26 июня 2013 г.). «Что нового в Direct3D 11.2» . Channel9 - СТРОИТЬ 2013 . около 20:00.
  39. ^ «Microsoft официально отказывается от использования Mantle» . semiaccurate.com .
  40. ^ Сегмент Криса Тектора http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (примерно с 18 минут)
  41. Рианна Смит, Райан (18 сентября 2014 г.). «Microsoft подробно описывает Direct3D 11.3 и 12 новых функций рендеринга» . AnandTech . Проверено 6 ноября 2014 года .
  42. Рианна МакМаллен, Макс (2 апреля 2014 г.). «Предварительный просмотр Direct3D 12 API» . Канал 9 . Microsoft .
  43. Мур, Бо (5 мая 2015 г.). «DirectX 12 сможет использовать ваш встроенный графический процессор для повышения производительности» . PC Gamer . Будущее США . Проверено 22 августа 2015 года .
  44. Рианна Мишо, Скотт (4 мая 2015 г.). «СТРОЙ 2015: Финальное открытие DirectX 12» . Перспектива ПК . Перспектива ПК. Архивировано из оригинала на 5 сентября 2015 года . Проверено 22 августа 2015 года .
  45. Рианна Лэнгли, Брайан (29 июля 2015 г.). «Выпущены Windows 10 и DirectX 12!» . Блог разработчиков MSDN DirectX . Microsoft . Проверено 22 августа 2015 года .
  46. ^ Енг, Андрей (30 апреля 2015). «Мультиадаптер DirectX 12: осветите бездействующий кремний и заставьте его работать на вас» . Блог разработчиков MSDN DirectX . Microsoft . Проверено 22 августа 2015 года .
  47. ^ Райан Смит. «AnandTech - Microsoft объявляет о выпуске DirectX 12: низкоуровневое программирование графики переходит в DirectX» . anandtech.com .
  48. ^ Енг, Эндрю (13 августа 2014). «DirectX 12 - высокая производительность и высокая экономия энергии» . Блог разработчиков DirectX . Microsoft .
  49. ^ Lauritzen, Эндрю (11 августа 2014). «SIGGRAPH 2014: DirectX 12 на Intel» . Зона разработчика . Intel .
  50. Рианна Уолтон, Марк (19 августа 2015 г.). «Тестирование DirectX 12: ранняя победа для AMD и разочарование для Nvidia» . Ars Technica UK . Проверено 19 августа 2015 года .
  51. ^ «GoW4 Dev о повышении производительности DX12, проблемах Xbox One S, ESRAM и Ultimate Edition на ПК» . Проверено 15 июля 2018 года .
  52. ^ «ID Software Dev озадачена тем, что разработчики выбрали DX12 вместо Vulkan, утверждает, что Xbox One DX12 отличается от ПК« GamingBolt.com: Новости видеоигр, обзоры, превью и блог » . gamingbolt.com . Проверено 1 марта 2017 года .
  53. ^ «Руководитель Xbox One предупреждает игроков, чтобы они не ожидали кардинальных улучшений от DirectX 12 - ExtremeTech» . ExtremeTech . Проверено 30 сентября 2014 года .
  54. ^ "Представляем Microsoft DirectX Raytracing!" . Microsoft.
  55. ^ «Microsoft переносит DirectX 12 на Windows 7, повышая производительность некоторых старых компьютерных игр» . PCWorld . 13 марта 2019 . Проверено 17 апреля 2019 года .
  56. ^ «Объявление DirectX 12 Ultimate» . Microsoft . 19 марта 2020 . Проверено 20 марта 2020 года .
  57. Керр, Крис (20 марта 2020 г.). «Microsoft запускает DirectX 12 Ultimate для поддержки графики следующего поколения» . Гамасутра . Проверено 20 марта 2020 года .
  58. Перейти ↑ Chen, Raymond (2006). «Этимология и история». The Old New Thing (1-е изд.). Pearson Education. п. 330. ISBN 0-321-44030-7.
  59. ^ «Что случилось с DirectX 4? - Старая новая вещь - Домашняя страница сайта - Блоги MSDN» . Blogs.msdn.com. 22 января 2004 . Проверено 30 декабря 2012 года .
  60. ^ «Microsoft поставляет окончательный выпуск DirectX 6.0» . Microsoft.com . 7 августа 1998 года. Архивировано 26 августа 2015 года . Проверено 19 июля 2019 года .
  61. ^ «Microsoft поставляет DirectX 6.1» . Microsoft.com . 3 февраля 1999 года. Архивировано 26 августа 2015 года . Проверено 19 июля 2019 года .
  62. ^ a b «Microsoft DirectX - часто задаваемые вопросы» . ActiveWin.com . Архивировано из оригинального 10 февраля 2003 года . Проверено 30 августа 2019 года .
  63. ^ «Microsoft поставляет окончательный выпуск DirectX 7.0» . Microsoft.com . 22 сентября 1999 года. Архивировано 19 июля 2019 года . Проверено 19 июля 2019 года .
  64. ^ Пол Терротт (21 сентября 1999). «Microsoft выпускает DirectX 7.0» . ITProToday . Архивировано 17 апреля 2019 года . Проверено 19 июля 2019 года .
  65. ^ "Центр загрузки: DirectX / Версия - 7.0a" . Microsoft.com . Архивировано из оригинала 8 апреля 2000 года . Проверено 20 июля 2019 года .
  66. ^ Маартен Goldstein (18 декабря 1999). «Выпущен DirectX 7A» . Shacknews . Архивировано 20 июля 2019 года . Проверено 20 июля 2019 года .
  67. ^ Пол Терротт (14 сентября 2000). «Обзор Windows Millennium Edition (Windows Me)» . ITProToday . Архивировано 13 июня 2018 года . Проверено 21 июля 2019 года .
  68. Admin (10 ноября 2000 г.). «Утечка DirectX 8» . Geek.com . Архивировано из оригинала 12 июля 2016 года . Проверено 20 июля 2019 года .
  69. ^ "DirectX 8.0a Redist" . Microsoft.com . 24 января 2001 года архив с оригинала на 31 марта 2001 года . Проверено 20 июля 2019 года .
  70. ^ «Загрузите среду выполнения DirectX для конечных пользователей (июнь 2010 г.) из официального центра загрузки Microsoft» . microsoft.com . Microsoft.
  71. ^ «Загрузите веб-установщик среды выполнения DirectX для конечных пользователей из официального центра загрузки Microsoft» . microsoft.com . Microsoft.
  72. ^ a b «Загрузки MicroSoft DirectX для Windows (Win95, Win98, Win98SE, WinME, Win2000, WinXP) - полная история выпусков, включая DirectX1, DirectX2, DirectX3, DirectX5, DirecX6, DirecX7, DirecX8, DirecX9» . falconfly.3dfx.pl . Проверено 5 августа 2018 года .
  73. ^ «Microsoft обновляет Windows Vista до DirectX 11» . pcgameshardware.com .
  74. ^ https://docs.microsoft.com/en-us/windows/uwp/whats-new/windows-10-build-15063
  75. ^ https://blogs.msdn.microsoft.com/directx/2017/11/07/announcing-new-directx-12-features/
  76. ^ https://microsoft.github.io/DirectX-Specs/d3d/D3D12onWin7.html
  77. ^ https://blogs.msdn.microsoft.com/directx/2018/10/02/directx-raytracing-and-the-windows-10-october-2018-update/
  78. ^ https://devblogs.microsoft.com/directx/variable-rate-shading-a-scalpel-in-a-world-of-sledgehammers/
  79. ^ DirectX и Windows XP [ постоянная мертвая ссылка ]
  80. ^ support.microsoft.com https://support.microsoft.com/en-in/help/15061/windows-which-version-directx . Проверено 30 сентября 2020 года . Отсутствует или пусто |title=( справка )
  81. ^ MSN. «Минимальные требования DDI» . Microsoft . Проверено 2 августа 2012 года .
  82. ^ «SharpDX - Управляемый DirectX» . Проверено 30 сентября 2014 года .
  83. ^ "Sharpdx / SharpDX" . GitHub . Проверено 30 сентября 2014 года .

Внешние ссылки [ править ]

  • Сайт разработчика Microsoft DirectX
  • DirectX в Керли
  • Состояние DirectX 10 - качество изображения и производительность