Двадцать лет спустя. эволюция api microsoft directx

Играя в видеоигры, слушая музыку, смотря фильмы, пользуясь клавиатурой и мышью, мы не задумываемся, почему все работает, как часы. В 1995 году компания Microsoft выпустила DirectX – набор библиотек и функций, позволяющих реализовать возможности аппаратных устройства на 100%, которым ежедневно пользуются миллионы владельцев ПК с операционной системой Windows!
Скачать DirectX на компьютер Как узнать версию DirectX на компьютере

Базовый набор файлов DirectX включен в ОС Windows. В библиотеках содержатся инструкции, по которым аппаратные устройства выполняют определенные задачи, например, отрисовку трехмерных объектов. В состав DirectX включены модули, обеспечивающие работу видеокарты, клавиатуры, звуковой платы, мыши, сетевого адаптера и других комплектующих: DirectInput, Direct3D, DirectPlay, DirectSound и др. Взаимодействие аппаратных устройств и установленных компонентов происходит автоматически в любой версии программного обеспечения.

Двадцать лет спустя. Эволюция API Microsoft DirectX

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

При обновлении удалять старые библиотеки не нужно – замена произойдет в процессе инсталляции без участия пользователя.

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

DirectX для версий windows:

Версии DirectX

Двадцать лет спустя. Эволюция API Microsoft DirectX Двадцать лет спустя. Эволюция API Microsoft DirectX Двадцать лет спустя. Эволюция API Microsoft DirectX Двадцать лет спустя. Эволюция API Microsoft DirectX

Скачать DirectX бесплатно

Приложение
OS
Формат
Версия
Размер
Загрузка
DirectX 12 Windows x32 – x64 онлайн установщик 2.06 Mb
DirectX 11 Windows x32 – x64 полная версия 96.86 Mb
DirectX 10 Windows x32 – x64 полная версия 96.84 Mb
DirectX 9 Windows x32 – x64 полная версия 96.82 Mb

Как установить DirectX:

Запустите файл.

Нажмите установить.

Дождитесь конца установки.

Мы рекомендуем использовать самую последнюю версию библиотек. Просмотреть данные о DirectX очень просто: воспользуйтесь сочетанием клавиш Windows и R – в диалоговом окне введите команду dxdiag и нажмите OK. В запустившемся окне вы найдете всю необходимую информацию.

Обратите внимание! В лицензионных сборках Windows 10 последняя версия DirectX установлена по умолчанию, инсталляция дополнительных компонентов не требуется, кроме исключительных случаев, например, когда требуется запустить старую видеоигру – недостающие компоненты можно установить самостоятельно за считанные секунды.

Немного истории об OpenGL и DirectX

15.08.2013Дмитрий+История

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

Начнем с OpenGL

Интерфейс OpenGL (Open Graphics Library) создан и запущен в 1992 году известными компаниями в сфере разработки программ.

Он был представлен как кросс-платформенный интерфейс, не зависящий от аппаратного обеспечения.

В базе лежала IRIS GL — библиотека, которую ранее разработали специалисты из Silicon Graphics Inc (SGI).

Двадцать лет спустя. Эволюция API Microsoft DirectX

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

 

Развитие библиотеки OpenGL происходит за счет специализированной структуры — Architectural Review Board (ARB). Это «Комитет по пересмотру архитектуры». В него включены несколько компаний, которые имеют определенные интересы в процесс развития рассматриваемой библиотеки.

Сюда входят такие гиганты как 3D Labs, NVIDIA, ATI, Intel, id Software, SGI, Apple, и Microsoft, который в своих реализациях Windows использует OpenGL.

Версия же этого OpenGL сходна с более ранними разработками и не может работать с аппаратным ускорением, но эти возможности появляются благодаря драйверам используемых видеокарт.

 
OpenGL используется повсюду, начиная с 90-х голов 20 века. Это связано с тем, что данная библиотека была грамотно написана с удачной архитектурой.

Эта библиотека ведет себя стабильно при использовании, а также поведение OpenGL легко предсказать. Одним из недостатков является медленное развитие.

Это связано с медленной работой ARB, а именно в том, что при изменении определенных стандартов много времени уходит на согласование различных документов.

Особенно это заметно в последнее время, когда дешевые видеокарты стали достаточно профессиональными и их возможности меняются примерно раз в год. А развитие OpenGL отстает от развития технологий видеокарт, поэтому существуют расширения, использующие отдельными разработчиками для возможности использования новых функций видеокарт.

Пришло время вспомнить историю развития DirectX

К выходу операционной системы Windows 95 все же большая часть видеоигр работала под MS-DOS. Ранние версии Windows не представляли возможностей для разработок игр.

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

Компания Microsoft решила не использовать разработки своего API и взяли за основу решения небольшой фирмы RenderMorphic. Известно, что первоначально данный API был студенческим заданием и не узнал успеха на экзамене. Но все же Microsoft встроили эту библиотеку в Game SDK, считая это отличной возможностью.

Позже эта разработка называлась DirectX 1.0. и не стала популярной. Из-за медленной работы, кучи ошибок и негибкой архитектуры, а также достаточно сложного кода.

DirectX — Википедия

Microsoft DirectX

Тип

Среда для приложений и игр

Разработчик

Microsoft

Написана на

HLSL

Операционная система

Microsoft Windows

Первый выпуск

30 сентября 1995 года

Последняя версия

12 Ultimate (2021)

Лицензия

Microsoft EULA

Сайт

DirectX
 Медиафайлы на Викискладе

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.

Главным фактором, определяющим, насколько популярна будет новая ОС, являлся набор программ, которые можно будет запускать под её управлением.

В компании пришли к выводу, что, пока разработчики видят DOS более подходящей для написания игровых приложений, коммерческий успех новой ОС весьма сомнителен.

DOS позволяла разработчику получить прямой доступ к видеокарте, клавиатуре/мыши/джойстику и прочим частям системы, в то время как Windows 95, с её защищённой моделью памяти, предоставляла более стандартизованный, но в то же время весьма ограниченный и накладный доступ к устройствам. Microsoft нуждалась в новом способе дать разработчику всё, что ему необходимо. Крэйг Айслер (Craig Eisler), Алекс Сэйнт Джон (Alex St. John) и Эрик Энгстром (Eric 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

DirectX

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).

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

Хронология версий DirectX[]

Версия DirectX

Логотип

Номер версии

Операционная система

Дата релиза

DirectX 1.0 4.02.0095 Windows 95a 30 сентября 1995
DirectX 2.0 / 2.0a

Microsoft DirectX – это очень просто!

Этот материал написан посетителем сайта, и за него начислено вознаграждение.

Microsoft DirectX – это очень просто!

О чем пойдет речь в статье:

    Что такое DirectX?
    Для чего нужен DirectX?
    Что входит в DirectX?
    Что такое шейдер?
    Зачем нужны шейдеры? Конвейер и шейдерная модель
    Что дает пользователю компьютера очередная версия DirectX?
    DirectX 10. Эволюционное обобщение пройденного
    DirectX 10.1 Как же теперь жить? И пара слов об OGL

Когда говорят о “Microsoft DirectX”, то разные категории людей могут вкладывать в это различные понятия. Давайте разберемся, что может иметься в виду и что это такое на самом деле, для чего он нужен и чем же отличаются последние версии DirectX друг от друга.

Что такое DirectX?

Обратимся к первоисточнику – самой Microsoft:

http://msdn2.microsoft.com/en-us/library/bb219737.aspx

“DirectX is a set of low-level APIs for creating games and other high-performance multimedia applications. It includes support for high-performance 2D and 3D graphics, sound, and input”.

Учитывая, что API (Application Programming Interface) – это интерфейс разработки программ, буквальный перевод звучит так:
“DirectX – это набор низкоуровневых программных интерфейсов для создания игр и других высокопроизводительных приложений. Он включает в себя поддержку высокопроизводительной 2D и 3D графики, звука и устройств ввода”.

Применим эти знания на практике. Если моя карта поддерживает DirectX, это значит, что она … поддерживает набор низкоуровневых…. ну и далее по вышеприведенному тексту. Не срастается! Что-то здесь не так. Что же на самом деле поддерживает видеокарта? Попробуем разобраться. В действительности, Microsoft предоставляет это определение для разработчиков программного обеспечения, следовательно, само собой под DirectX подразумевается APIs DirectX. А с точки зрения пользователя все выглядит несколько иначе. Поэтому дадим более общее определение, хотя оно при этом будет подлиннее. DirectX – это технология Microsoft для операционных систем семейства Windows, предоставляющая разработчику программного обеспечения интерфейсы (то есть, комфортную среду интерактивного взаимодействия) для создания программ, эффективно использующих графические, мультимедийные устройства и устройства ввода, и обеспечивающая низкоуровневые утилиты (то есть эффективные высокооптимизированные программы) для взаимодействия этих устройств с прикладной программой и операционной системой через соответствующие драйверы. Другими словами, вполне логично различать понятия DirectX как технологии в целом, как наборов программных интерфейсов при создании программного обеспечения и как программной составляющей операционной системы, отвечающей за поддержку мультимедийных и графических устройств, а также устройств ввода. Для поддержки разработчиков программного обеспечения Microsoft предоставляет DirectX SDK (Software Developing Kit) – набор программ и утилит разработчика программного обеспечения под технологию DirectX, а для системных программистов и разработчиков компьютерного оборудования есть WDK (Windows Driver Kit )– набор программ и утилит для разработки драйверов. Оба этих программных продукта распространяются свободно и доступны для скачивания с сайта Microsoft. К слову сказать, по прилагаемой к DirectX SDK лицензии, все графические и мультимедийные файлы и компьютерные модели разрешается использовать в своих программах для демонстрационных некоммерческих целей. Теперь можно смело утверждать, что если моя видеокарта поддерживает DirectX, то это означает, что она способна выполнять программы, созданные с использованием API DirectX, при условии наличия соответствующего драйвера и поддержки со сороны операционной системы. Сегодня уже трудно найти видеоадаптер, не поддерживающий хотя бы DirectX 7, поэтому для нормальной работы приложения, разработанного в соответствии с конкретной спецификацией DirectX, нужно, во-первых, чтобы операционная система поддерживала эту версию (плюс к тому были установлены соответствующие или более новые библиотеки DirectX в виде dll – файлов, которые обычно автоматически устанавливаются при инсталляции программы, если на компьютере установлены более старые версии библиотек), во-вторых, чтобы видеокарта была с поддержкой соответствующего DirectX и, в третьих, чтобы был установлен подходящий драйвер видеокарты. Несоблюдение первых двух условий не позволит приложению запуститься, а в случае с драйвером может оказаться так, что самый последний доступный драйвер не является лучшим для конкретного приложения (вплоть до полной неработоспособности программы), хотя, в целом, действует правило, что лучше использовать самые свежие версии драйверов и рекомендуется этого правила придерживаться. Часто можно услышать фразу “графический стандарт DirectX”. Это верно лишь c большой натяжкой, особенно до DirectX 10, поскольку ничто не мешало производителям видеокарт легко утверждать о соответствии DirectX даже при несоответствии этой спецификации (хотя она и делится на обязательную и опциональную часть), вводя покупателя и пользователя в заблуждение. Этому способствовало и порождение компанией Microsoft нескольких вариантов DirectX одной версии и, в особенности, множества модификаций шейдерных моделей (SM — Shader Model), чем особенно отличилась версия DirectX 9. Впрочем, этому есть и свое логичное объяснение. Так сложилось исторически, что, хоть программируемый конвейер и возможность исполнения шейдеров впервые появились в версии DirectX 8, настоящая их обкатка происходила уже в DirectX 9.
Но к конвейеру и шейдерам мы вернемся чуть позже.

  • Для чего нужен DirectX?
  • Что входит в DirectX?

Что такое DirectX?

  • Немного о DirectX
  • Что такое DirectX ?
  • Справочник по DirectX для начинающих

Немного о DirectX

Пока в природе не существовало DirectX, большинство игровых программ для персональных компьютеров работали под управлением Ms Dos.

Чтобы запустить такие игры, пользователям приходилось бороться, в прямом смысле этого слова, с конфигурационными файлами системы, такими, как AUTOEXEC.BAT, CONFIG.SYS, и с настройками драйверов типа EMM386.EXE и т.д…

лишь ради того, чтобы получить несколько дополнительных свободных байт из доступных 640Кб базовой памяти, даже если на компьютере установлено 16Мб оперативной памяти.

Жизнь разработчиков программного обеспечения была не сахар, потому что для преодоления ограничения в 640Кб приходилось использовать различные драйверы для каждой разновидности видеоадаптеров и звуковых карт.

С выходом в свет технологии компании Microsoft DirectX для Windows 95 все указанные выше проблемы становятся историей.

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

Но разработка игр с использованием DirectX остается все еще непростой задачей. Иногда все еще достаточно трудно найти грамотную документацию, и начинающие разработчики тратят много времени на поиск знаний о том, как использовать такие новшества, как DirectDraw, Z-буферы или DirectSound, а также многие другие сложные, но полезные инструменты.

Цель этой статьи — помочь разработчикам, использующим DirectX, несколькими советами, основанными на моем собственном опыте написания программ. Обычные пользователи смогут получить из этого обзора общее представление о том, что такое DirectX.

Что такое DirectX ?

DirectX представляет собой набор из нескольких API (application programming interface — интерфейс программирования приложений), позволяющих разработчикам игр и других интерактивных приложений получать доступ к специфическим функциям аппаратного обеспечения без необходимости написания аппаратнозависимого программного кода.

DirectX основан на наборе интерфейсов COM или классов. COM расшифровывается, как Component Object Model (Компонентная Модель Объектов), и представляет собой спецификацию интерфейса, в котором функции вызываются через указатели. Таким образом, объекты COM могут описываться такими языками программирования, как C/C++, Delphi или даже Basic.

Все примеры, ссылка на которые была выше, написаны на C++, т.к. я пользуюсь именно этим языком.

Интерфейс COM используется не только в DirectX, но и на уровне операционной системы в качестве модели объектов и является сердцем одной из самой широко применяемой технологии — OLE (Objects Linking and Embedding — связывание и встраивание объектов).

Последняя версия DirectX имеет порядковый номер 5.0 и включает в себя следующие API:

  • DirectDraw — обеспечивает доступ к аппаратным средствам, отвечающим за изображение. Предлагается возможность работать с двумерной графикой и напрямую управлять видеопамятью, оверлеями и сменой видеостраниц.
  • DirectSound — как видно из названия, этот компонент обеспечивает аппаратнонезависимый интерфейс воспроизведения звука. DirectSound позволяет приложениям полностью использовать возможности аппаратных компонентов, обеспечивающих работу со звуком, например, микширование без временных задержек.
  • DirectInput — Обеспечивает аппаратнонезависимый ввод данных в систему в режиме реального времени. События, обрабатываемые DirectInput, формируются клавиатурой, мышкой и джойстиком.
  • DirectPlay — представляет собой независимый протокол для осуществления связи между компьютерами. Может применяться для многопользовательских игр, связь в которых осуществляется через Интернет, локальную сеть или прямое последовательное соединение с помощью кабеля. Интерфейс, именуемый DirectPlay Lobby, позволяет создавать онлайновые места встреч в интернете, попадая в которые множество людей могут объединяться и совместно участвовать в играх.
  • Direct3D — это подсистема создания трехмерных графических изображений. Состоит из API низкого уровня, который обеспечивает несколько базовых возможностей создания изображения, и API высокого уровня, который осуществляет комплекс операций, образующих изображение.

DirectX 5.0 SDK (Software Development Kit — Набор разработчика программ), доступен для загрузки с сайта Microsoft.

Справочник по DirectX для начинающих

Если Вы не являетесь разработчиком игровых программ, но Вам нравиться играть на персональном компьютере, Вы точно должны были слышать о DirectX. Почему?

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

В тоже время если какая-то из таких современных игр установленна на Вашем компьютере, значит, DirectX тоже установлен, и Вы можете узнать об этом, обратив внимание на несколько новых файлов, которые появились в директории WindowsSystem, например DDRAW.DLL или DPLAY.DLL. Это компоненты DirectX, которые используются всеми играми, установленными в Вашей системе и работающими через интерфейс DirectX.

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

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

  • Улучшенные многопользовательские игры Причина, почему хороших многопользовательских игр не так много, в том, что они очень сложны в создании. DirectPlay делает создание таких игр менее болезненной проблемой и упрощает их установку. Вот почему мы вправе ожидать увеличения количества новых классных многопользовательских игр.
  • Завораживающие 3D-игры Вы знаете, почему трехмерные игры идут на Вашем компьютере так медленно? Причина в том, что изображение 3D-объектов на плоском экране требует огромного количества математических вычислений. Если эти вычисления осуществляются центральным процессором системы, то такие процессы обсчитываются слишком медленно, так как процессор выполняет еще и другие системные операции. Одним из решением этой проблемы является возложение задач по обработке трехмерных процессов на специальные 3D-видеоакселераторы.Такие карты имеются в продаже, но многие игры не используют аппаратные возможности специализированных плат, потому что создатели игры должны написать соответствующий драйвер, а иногда бывает проблематично переписать заново целые фрагменты кода для того, чтобы использовать преимущества аппаратной обработки 3D. Компонент Direct3D, впервые включенный во вторую версию DirectX, обеспечивает стандарт на использование видеоадаптеров, обеспечивающих аппаратную 3D-акселлерацию, и его применение, несомненно, заставит трехмерные игрушки работать быстрее.Кроме этого, Direct3D эмулирует программную реализацию 3D для компьютеров, не оснащенных аппаратной поддержкой обработки трехмерной графики.
  • Упрощенная установка программ Игры, соответствующие спецификации DirectX, полностью используют возможности, предоставляемые интерфейсом Windows 95, и их установка также проста, как инсталляция Вашего любимого текстового процессора. Это означает, что система больше не будет спрашивать Вас о том, какое прерывание использует звуковая карта или кто является изготовителем видеоадаптера. Конечно, существует вероятность несовместимости вашего аппаратного обеспечения с драйверами DirectX, однако со временем этих проблем не станет, так как все современные компоненты компьютера поступают в продажу уже сертифицированными на соответствие стандарту DirectX.
  • Изображение в играх стало гораздо лучше Большинство игр, написанных для DOS, используют низкое разрешение изображения, обычно 320×240. Это объясняется тем, что такое разрешение максимально для стандартных VGA-видеокарт, поддерживающих отображение только 256 цветов. Для того, чтобы использовать более высокое, а следовательно, более качественное разрешение, такое, как 640×480 или 800×600, разработчикам необходимо писать игры, работающие с видеокартами стандарта Super VGA, а это означает увеличение объема работ.DirectX поддерживает VGA и SVGA видеорежимы при 64К цветов (Hi-color) без дополнительных затрат ресурсов. С каждым днем производительность видеоадаптеров возрастает, следовательно, DirectX игры будут выглядеть все более реалистично и привлекательно.

Microsoft DirectX 11 – новый виток эволюции игровой графики

::>Видеокарты >2009 > IT —

Впервые о DirectX 11 мир услышал в ноябре 2008 года, тогда компания Microsoft представила свои начальные разработки API (Application Programming Interface) и новые возможности обработки графики.

Официально же DirectX 11 стал доступен 22 октября 2009 года, вместе с выходом новой операционной системы Windows 7 (хотя доступен в виде обновления и для Windows Vista). Причем первые графические адаптеры для аппаратной поддержки DirectX 11 представила компания AMD еще до официального появления финальной версии API.

Графический процессор под кодовым названием RV870 официально является первым в мире решением с полной поддержкой новых технологий, включенных в состав Microsoft DirectX 11.

Выпуск Radeon HD 5870 (RV870) от AMD состоялся 23 сентября 2009 года, а первой игрой, в которой можно будет насладиться всей красотой новых технологий, является Colin McRae: DiRT 2 от компании Codemaster, именно они первые заявили об использовании DirectX 11. В недалеком будущем стоит ожидать ответа и от NVIDIA для визуализации новых игр с поддержкой DirectX 11, которых со временем будет все больше и больше.

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

Сравнение возможностей визуализации DirectX 10 и DirectX 11

Сравнение детализации изображения в DirectX 10 и DirectX 11: СТАЛКЕР — Зов припяти

Главные особенности и новшества DirectX 11

  • Tessellator (модуль тесселяции)
  • Shader Model 5.0 (Шейдерная Модель версии 5.0)
  • ComputeShader (Вычеслительные шейдеры)
  • Multithreadedrendering (Многопоточная визуализация)
  • BC6 & BC7 (два новых формата сжатия текстур)
  • Conservative oDepth (Запись шейдера в буфер глубины)

Tessellator (модуль тесселяции)

Тесселяция не является совершенно новой технологией, впервые её стали использовать видеопроцессоры Xenos, которые были разработаны компанией AMD для игровых консолей Xbox 360 в 2005 году. Однако модуль тесселяции использованный в DirectX 11 является более устойчивым и гибким, нежели модуль, использованный в графических процессорах Xenos.

Тесселяция — увеличения количества полигонов

Тесселяция улучшает процесс создания авторского контента и позволит разработчикам и художникам создавать более реалистичных и сложных персонажей, избегая при этом огромных расходов производительности системы.

В основе тесселяции лежит идея о том, что объект, расположенный далеко от точки обозрения, будет менее детализирован, из-за того, что его тяжело рассмотреть, но по мере его приближения количество треугольников в изображении объекта экспоненциально увеличивается с целью улучшения его детализации для того, чтобы он выглядел более реалистично.

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

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

Все стадии обрабатываются в графическом процессоре

Процесс тесселяции предмета начинается в Hull Shader (поверхностный шейдер) — он берет контрольные точки и вычисляет нужный уровень тесселяции. После этой базисной реорганизации контрольные точки отправляются в Domain Shader (доменный шейдер) — тесселятор абсолютно ничего не знает о контрольных точках.

Вместо этого тесселятору предоставляют некоторое количество параметров тесселяции, которые задают ему требуемый уровень тесселяции на определенном патче (особые минимальные кусочки объекта).

Hull Shader сообщает тесселятору, в каком порядке он должен работать — разработчик сможет определить, каким методом произойдет процесс тесселяции, поскольку модуль тесселяции располагает фиксированным комплектом функций, у него есть несколько операционных режимов.

Тесселятор берет то, что было подано ему из Hull Shader и действует в патче над формированием требуемой добавочной геометрии. Как только эта стадия будет завершена, он выдаст доменные точки (domain points) и данные топологии.

Доменные точки подаются в Domain Shader, который создает на их основе вершины, доступные прочей части конвейера. Одновременно данные топологии адресуются прямо на этап сборки примитивов конвейера — это совершается потому, что данные шейдерам не нужны, они подготовлены для растеризатора.

Здесь нужно отметить то, что на всех этапах стадии тесселяции работа ведется не с треугольниками – вместо этого обрабатываются патчи и точки. Патчи представляют собой кривые или области поверхности и практически всегда являются четырехугольниками. Это первый случай, когда DirectX использует в качестве примитивов не треугольники, и это является существенным шагом вперед.

Минимальный уровень тесселяции

Максимальный уровень тесселяции

Все описаное выше осуществляется за один проход через конвейер DirectX 11. Исходя из этого, мы видим, что у него есть значительный потенциал стать невообразимо эффективным способом добавления огромного количества деталей в будущие игры.

Преимущества тесселяции

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

Геометрические шейдеры – создание и уничтожение вершин на аппаратном уровне, использование в качестве примитивов не треугольников, новый уровень масштабирования производительности.

Shader Model 5.0 (Шейдерная Модель версии 5.0)

Набор библиотек Microsoft DirectX 11 принес с собой расширение языка низкоуровневого программирования — Shader Model 5.0, который использует объектно-ориентированные концепции, с тем, чтобы облегчить разработку шейдеров и внести некоторые вспомогательные возможности.

Детальное рассмотрение новой шейдерной модели

Это обновление для HLSL (High Level Shading Language) дает программисту полный контроль над компилятором HLSL для решения проблемы специализации шейдеров путем использования интерфейсов, объектов и полиморфизма.

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

  • Новый подход к написанию многофункциональных шейдеров
  • Новый механизм Dynamic Shader Linking позволит вместо написания кучи разнородных шейдеров описания материала и источников света, а также их взаимодействия, создавать один универсальный шейдер с достаточно просто читаемым кодом, что  облегчит и ускорит программирование и отладку.

Также Shader Model 5.

0 дополнена рядом инструкций для ускорения определения краев полигонов при выполнении функций сглаживания, ускорения выполнения алгоритмов фильтрации теней, дополнительного преобразования данных, ускорения сжатия их и распаковки, а также получения других возможностей. Все эти расширения и дополнения призваны упростить работу программиста, а также позволить получить более реалистичные визуальные эффекты без заметного снижения производительности.

Compute Shader (Вычеслительные шейдеры)

DirectCompute — главным образом это коммуникация данных между потоками и огромный выбор примитивов для случайного доступа и потоковых операций ввода/вывода.

Эти функции санкционируют более простые и более быстрые реализации уже применяемых методик, таких как создание изображений и постобработка, а также раскрывают новейшие методы, которые могут действовать на аппаратных средствах Direct3D11.

Процессработы ComputeShader

Фактически и на графических процессорах предыдущих поколений производители видеокарт реализовывали подобные функции, которые получали фирменное наименование и применение – технологии ATI Stream и NVIDIA CUDA.

Компания же Microsoft в DirectX 11 решила унифицировать расширенные вычислительные возможности видеокарт, позволяя создавать программный код, выполняемый на всех новых видеоускорителях, не зависимо от производителя графического процессора.

В качестве применения DirectCompute открываются новые горизонты: постобработка кадров и видеопотока, улучшенный искусственный интеллект, более реалистичная физика и т.д.

  1. В качестве демонстрации возможностей применения Compute Shader компания AMD представила две «демки»: AMD Ladybug DirectX 11 Demo и AMD Mecha DirectX 11 Demo.
  2. Демонстрация эффектов постобработки с помощью DirectCompute
  3. С помощью Ladybug показываются широкие возможности ускорения и усложнения постобработки изображения, что позволило добавить такие эффекты как динамическое изменение глубины резкости в одних областях и повышение резкости в других, размытие в движении, улучшенное сглаживание, более реалистичное размытие теней в перспективе.
  4. Ускорение обработки полупрозрачных материалов с помощью DirectCompute

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

Multithreaded rendering (Многопоточная визуализация)

В DirectX 11 внесли изменения, которые позволят разработчикам усовершенствовать управление GPU со стороны многоядерного CPU. DirectX 11 увеличивает масштабирование ресурсов CPU через модификации в моделях API и драйвера. Асинхронный доступ к устройствам становится допустимым при помощи двух ключевых особенностей объекта Direct3D 11 Device.

  • Процесс последовательной визуализации
  • Процесс многопоточной визуализации

Это долгожданное расширение позволяет более полно задействовать для ускорения визуализации сцены ресурсы многоядерных процессоров, обеспечивая возможность одновременного выполнения не только видеодрайвера и единой нити программного кода, а и различных дополнительных функций, таких как перекомпиляция шейдеров, загрузка и распаковка ресурсов и т.д.

BC6 & BC7 (два новых формата сжатия текстур)

Самый большой объем памяти в играх чаще всего предоставляется текстурам, поэтому становится ясным стремление разработчиков усовершенствовать сжатие текстур, которое необходимо для минимизации объемов применяемой памяти и снижения требований к ее пропускной способности без влияния на необходимое для визуализации время. DirectX 11 дает разработчикам новоиспеченные форматы сжатия (BC6 для HDR-текстур и BC7 для LDR-изображений и карт нормалей), которые призваны помочь им добиться высококачественной визуализации, не жертвуя при этом производительностью.

  1. Слева расположено оригинальное изображение HDR, готовое к обработке, а справа эквивалентное сжатое BC6 изображение, а по центру изображена абсолютная  погрешность.
  2. Результат применения компрессии BC7 в сравнении с BC3 – потери детализации при использовании нового алгоритма практически отсутствуют.
  3. Conservative oDepth (Запись шейдера в буфер глубины)

Зачастую разработчикам приходится отключать Z-структуры и алгоритмы, когда происходит запись шейдера в буфер глубины сквозь регистр oDepth.

Функция Conservative oDepth в DirectX 11 позволяет шейдерам совершать запись в буфер глубины в переделах определенной зарезервированной зоны.

Это позволит аппаратным средствам избежать значительной потери в производительности, разрешая использование ускорения за пределами указанной зоны.

Также к числу нововведений DirectX 11, призванных упростить, улучшить и ускорить, относится целый ряд менее значимых возможностей (Addressable Stream Out, Draw Indirect, Pull-model attribute eval, Improved Gather4, Min-LOD texture clamps, Geometry shader instance programming model, Read-only depth or stencil views и др.), правда достаточного объема достоверной и понятной информации по ним пока нет.

DirectX 11 в играх

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

Кроме новых видеокарт и затрат на них, Direct3D11 вносит в игры новый уровень детализации предметов, увеличение количества различных эффектов и улучшенную обработку световых лучей.

Графика в играх, которая была и так сильно приближена к фотореалистичности, станет ещё более яркой и правдоподобной.

  • Но прежде чем рассматривать потрясающие эффекты, появившиеся благодаря тесселяции, давайте взглянем на эволюцию графических API на примере интересного нового демо-бенчмарка Heaven Benchmark от земляков Unigine Corp.
  • Unigine Heaven Benchmark DirectX 9.0c
  • Даже при использовании только возможностей DirectX 9 сцене из Heaven Benchmark смотрятся достаточно эффектно, хотя и не так реалистично, как того хотелось бы.
  • Unigine Heaven Benchmark OpenGL
  • Если рассмотреть ту же сцену, но с раскрытием возможностей API OpenGL, то в первую очередь заметно изменение детализации мелких массовых объектов, таких как трава и иголки/листья, что добавляет реалистичности.
  • Unigine Heaven Benchmark DirectX 10.0

По сравнению с DirectX 9 в DirectX 10 появляются возможности аналогичные сцене в режиме OpenGL, но тени получаются более мягкими и цельными, а световые эффекты получаются более реалистичными. Очень хорошо видно преимущество DirectX 10 в динамике, особенно при изменении интенсивности и количества источников освещения.

Unigine Heaven Benchmark DirectX 11

А вот в DirectX 11 наконец-то удается показать, что все объекты в сцене имеют свой индивидуальный рельеф, а также еще на порядок увеличить детализацию всего. Наиболее эффектно и визуально действительно объемными кажется черепица на крыше, рельефные элементы дома, а также камни  вдоль дороги – с брусчаткой разработчики даже перестарались.

Наиболее существенный вклад в новый уровень графики обеспечивает тесселяция, которую можно будет включить или отключить при необходимости. Именно это нововведение мы рассмотрим повнимательнее. На представленных ниже изображениях, вы сможете увидеть, какие именно изменения вступают в силу при включении и отключении тесселяции.

  1. Без тесселяции
  2. Тесселяция включена
  3. Без тесселяции
  4. Тесселяция включена
  5. Без тесселяции
  6. Тесселяция включена
  7. Без тесселяции
  8. Тесселяция включена

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

Конечно, подобные эффекты можно реализовать и другими способами, однако применение тесселяции позволяет более эффективно использовать шину данных, а также легко масштабировать производительность при помощи настроек уровня детализации.

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

Авторы: Роман Дода, Александр Черноиван

При подготовке материала использовалась информация из следующих источников:www.microsoft.comnews.softpedia.comwww.bit-tech.netru.wikipedia.orgwww.tomshardware.comen.hardspell.com

Ссылка на основную публикацию
Adblock
detector