API Microsoft DirectX.
Этот программный интерфейс был разработан для операционных систем начиная с Windows 95, Windows 98 и Windows NT/2000 и др. С помощью этого API увеличивается быстродействие игр, деловой графики, трехмерного звука и т.д. Несмотря на то, что DirectX был предназначен для игр, он также используется в программах NetMeeting, ActiveMovie и NetShow. Поскольку DirectX относится к уровню аппаратных абстракций (Hardware Abstraction Layer - HAL), разработчикам программного обеспечения необходимо использовать функции DirectX, а не обращаться напрямую к видеоадаптеру, звуковой карте, джойстику и другому аппаратному обеспечению.
DirectX также относится к уровню аппаратной эмуляции (Hardware Emulation Layer - HEL), что позволяет разработчику программно эмулировать те функции, которые не реализованы аппаратным обеспечением. Уровень HEL "медленнее", чем HAL, но лучше иметь нереализованную аппаратно функцию (пусть даже медленную), чем не иметь ничего.
Отношения между аппаратным, программным обеспечением и DirectX можно продемонстрировать следующей схемой:
(Аппаратное обеспечение) -> (Direc+X) -> (Программное обеспечение).
Обновление DirectX можно выполнять независимо от операционной системы. DirectX состоит из "основного" слоя, который обеспечивает доступ к звуковым устройствам, устройствам двухмерной и трехмерной графики, устройствам ввода и процедурам установки. Состав программного интерфейса DirectX (версии 6.1) приведен в табл. 1. Программный интерфейс DirectX содержит слой Media, который состоит из API, приведенных в табл. 2.
Слой Media DirectX предоставляет сервис для разработчиков игр, Web и интерактивных медиа-программ. Самая последняя версия DirectX доступна для бесплатной загрузки с Web-узла фирмы Microsoft. Кроме того, DirectX является частью таких продуктов, как Internet Explorer, Windows 2000. Некоторые производители аппаратного обеспечения поставляют вместе со своими продуктами последнюю версию DirectX. Перед инсталляцией некоторые программы проверяют номер версии установленного программного интерфейса. Если установленная версия устарела, то пользователю будет предложено установить последнюю версию. Программный интерфейс DirectX обратно совместим, т.е. последняя версия поддерживает функции всех предыдущих. Для корректной работы всех программ необходимо использовать последнюю версию программного интерфейса DirectX.
Таблица 1. Состав программного интерфейса DirectX (версии 6.1)
Название API |
Функция |
DirectDraw |
Поддержка двухмерной графики |
Direct3D |
Поддержка трехмерной графики |
Directlnput |
Поддержка джойстиков, игровых рулей и других устройств ввода |
DirectSound |
Основной звук и эффекты |
DirectSound3D |
Создание трехмерного звука |
DirectSetup |
Автоматическая установка программного обеспечения и драйверов |
DirectMusic |
Поддержка динамической интерактивной музыки |
Таблица 2. Программный интерфейс DirectX (слой Media, который состоит из API)
Название API |
Функция |
DirectS how |
Ранее известен как ActiveMovie; позволяет воспроизводить потоки медиаданных, выполнять захваты аудио- и видеоданных. |
DirectAnimation |
Ранее известен как анимация ActiveX; создание анимации, с помощью Dynamic HTML, аплетов Java и сценариев. |
DirectX Transform |
Позволяет манипулировать одним или несколькими изображениями для Web и приложений. |
Работа DirectX с конкретным аппаратным обеспечением описывается в его документации или на Web-узле этого производителя. Для определения номера версии программного интерфейса DirectX необходимо посмотреть номер версии файла Ddraw.dll. Для этого щелкните на кнопке Пуск (Start) и выберите команду “Найти Файлы” и папки (Find=>File and Folders). В поле “Имя” введите Ddraw.dll и щелкните на кнопке “Найти” (Find). После выполнения поиска щелкните правой кнопкой мыши на найденном файле и из контекстного меню выберите команду “Свойства” (Properties). Активизируйте вкладку “Версия” (Version) и выделите в левом столбце параметр “Версия продукта” (Product Version). При установке DirectX (начиная версии 6.1 и выше) в папку \Windows\ System копируется файл Dxdiag.exe, с помощью которого можно узнать номер версии программного интерфейса, а также протестировать его основные функции. Чаще всего проблемы возникают с устаревшими версиями DirectX. He забывайте посещать Web-узел фирмы Microsoft и регулярно загружать и устанавливать новые версии DirectX. Также особое внимание обращайте на предложение заменить системные файлы при установке программ. Если установленная версия DirectX будет заменена устаревшей, многие программы и игры перестанут запускаться.
Как уже было упомянуто выше, DirectX является совокупностью интерфейсов прикладного программирования - Application Programming Interface, API, он предназначен для удобного программирования приложений под операционные системы Microsoft Windows (главным образом, для программирования игр). Разнообразные библиотеки API из комплекта DirectX, представляют собой готовые наборы функций для облегчения труда программистов, которым теперь не нужно каждый раз создавать ряд типичных процессов для работы со звуком, видео и т.п., в комплекте DirectX для этого имеется ряд стандартных процедур и инструментов упрощающих создание мультимедийных приложений и игр под Windows. Хронология развития основных версий DirectX (с 1999 года) представлена в табл. 3.
Начиная с версии DirectX 8.0 в состав DirectX входили такие API как:
- DirectDraw - 2D растровая графика и Direct3D - D3D, 3D графика;
- DirectPlay - сетевые коммуникации в играх;
- DirectInput - обработка данных клавиатуры, мышки, джойстика и других игровых контроллеров;
- DirectSound - запись и воспроизведение звука;
- DirectSound3D - DS3D, 3D звук и DirectMusic - воспроизведение саундтреков из DirectMusic Producer;
- DirectX Media - сочетание DirectAnimation, DirectShow, DirectX Video Acceleration, Direct3D Retained Mode и DirectX Transform, соответственно, для анимации, воспроизведения мультимедиа и потоковых приложений, 3D и интерактива;
- DirectX Media Objects - поддержка объектов потоковой обработки - кодировщиков, декодеров, эффектов;
- DirectSetup - инсталляция компонентов, не реализованных в API DirectX.
Таблица 3.
Версия DirectX |
Операционная система |
Год выпуска |
DirectX 6.1 |
Windows 95/98/98SE |
1999 |
DirectX 7.0 |
Windows 95/98/98SE/2000 |
1999 |
DirectX 7.0a |
Windows 95/98/98SE/2000 |
1999 |
DirectX 7.1 |
Windows 95/98/98SE/ME/2000 |
1999 |
DirectX 8.0 |
Windows 95/98/98SE/ME/2000 |
2000 |
DirectX 8.0 |
Xbox |
2000 |
DirectX 8.0a |
Последний вариант под Windows 95 |
2000 |
DirectX 8.1 |
Windows 98/98SE/ME/2000/XP |
2001 |
DirectX 9.0 |
Windows Server 2003 |
2002 |
DirectX 9.0a |
Windows 98/98SE/ME/2000/XP |
2003 |
DirectX 9.0c |
Windows XP SP2, Windows Server 2003 SP1, Xbox 360 |
2004 |
DirectX 9.0c |
Совместимые с DX9.0c версии Windows, впервые включены D3DX DLL |
2005 |
DirectX 9.0c (Shader Model 3.0) |
Windows XP. Последнее обновление с поддержкой Windows 98/98 SE/ME/2000 - в августе 2005. Версии декабря 2005 и февраля 2006 - споддержкой формата XML для некоторых классов |
2005 |
DirectX 9.0L |
Windows Vista |
2005 |
DirectX 10.0 |
Windows Vista |
2006 |
DirectX 11.0 |
Windows Vista |
2008 |
В версии DirectX 8.0/8.0a были впервые применены программируемые пиксельные и вертексные шейдеры (Shader Model 1.0 и 1.1), и DirectX практически стал индустриальным стандартом. В DirectX 9.0 появилась поддержка Shader Model 2.0, DirectPlay, Shader Model 3.0. «Свежую» версию DirectX можно скачать с сайта Microsoft, а комплект разработчика - DirectX SDK, распространяется Microsoft на бесплатной основе. Версия DirectX9, которая неоднократно обновлялась в 2003 – 2005 годах, предоставляет более мощные по сравнению с предшественниками модели шейдерного программирования Direct3D. Версия Direct3D 9 является первичным графическим интерфейсом для Windows Vista, оставаясь API для написания 3D игр и приложений, совместимых с многими поколениями видеокарт и выпусков Windows.
Для сохранения полной совместимости со старыми версиями Windows некоторые особенности старых моделей драйвера эмулируются даже новой моделью драйвера Windows Vista. Поэтому, несмотря на поддержку новых драйверов WDDM для ряда видеокарт, Windows Vista продолжает поддерживать возможность использования старых драйверов XPDM для апгрейдов и корпоративных версий. В системах со старыми драйверами поддерживается Direct3D 9 и более старые версии интерфейсов, при этом принцип их работы будет схож с работой под Windows XP. Для работы драйвера WDDM требуется Direct3D 9Ex, Direct3D 10 или последующие версии. Интерфей Direct3D 9Ex, который является усовершенствованной версией Direct3D 9 API, имеет возможность виртуализации ресурсов и ряда других возможностей для работы под Windows Vista, но этот API работает только под Windows Vista и требует драйверов WDDM. Таким образом, использование Direct3D9 возможно с Windows XP или более ранних версий Windows, а использование Direct3D9 с XPDM драйверами требует поддержки Windows Vista для систем на базе акселераторов без поддержки Direct3D 10. Direct3D9 может работать с видеокартами для DirectX7.
DirectX10, который часто называют Direct3D 10 (D3D10) – по названию 3D API, является новой полностью переработанной версией, в которой изменен процесс взаимодействия приложений и «железа», изменено и распределение нагрузки между центральным и графическим процессорами. Это означает, что графический процессор видеокарты с поддержкой DirectX10 становится мощнее не только в способности более оперативного обсчёта ещё большего количества пикселей за то же время, но и позволяет работать с неведомыми ранее текстурами, объектами и явлениями. А избавленный от необходимости обсчёта графических эффектов, центральный процессор может теперь быстрее решать другие задачи.
DirectX10 предназначен исключительно для Windows Vista и не будет использоваться ни на какой другой платформе, так как в Windows Vista была реализована совершенно новая модель графического (дисплейного) драйвера - Windows Display Driver Model (WDDM), с этим связаны виртаулизационные и архитектурные нововведения WDDM, реализованные в API и основополагающей инфраструктуре DirectX10. Новая модель драйвера также отражает дальнейшую эволюцию видеокарт – от обработки 2D растровых операций и GDI приложений, 3D игр на графических картах с фиксированными функциями, к современным программируемым модулям обработки графики с широкой поддержкой графических приложений, за счет этого DirectX10 обеспечивает:
- более реалистичное изображение облаков и дыма;
- реалистичнее показываются отражения и преломления на отражающих поверхностях (воде, металле, стекле и др.);
- гораздо более реалистичное изображение, например, растений или меха;
- формируются чёткие и более мягкие тени;
- повышена насыщенность изображения ландшафтов с более сложной окружающей обстановкой;
- динамичнее и чаще могут меняться, по ходу событий, сценарии игр;
- более тщательно прорисовываются такие элементы как лес, и масштабные сцены боев и схваток;
- наблюдается больший реализм отображения движущихся объектов;
- улучшены объёмные эффекты;
- резко снижена нагрузка на CPU, за счет перераспределения процесса обсчёта ряда процессов на GPU, снижена вероятность затормаживания и зависания системы при сложном геймплее.
Новая модель драйвера Windows Vista Display Driver Model (WDDM), выводит на первые роли графический процессор и Direct3D, придавая совершенно иной смысл 3D рендерингу картинки экрана за счёт программируемого GPU. Благодаря использованию WDDM всё графическое «железо» теперь управляется только посредством Direct3D, и все остальные графические интерфейсы взаимодействуют с видеокартой только посредством Direct3D драйвера. Использование Direct3D 10 позволит использовать все возможности и мощности нового поколения видеокарт разработанных под Windows Vista
Direct3D 10 устраняет все узкие места прежних Direct3D API и позволяет значительным образом упростить программирование GPU и разгрузить ресурсы CPU. Теперь стала возможной организация и выполнение комплексных многопроходных операции GPU с минимальной загрузкой CPU, теперь расчет анимации выполняется один раз, а отрисовывать по этим данным можно много раз, позволяя, таким образом, реализовать замещающее текстурирование (Displacement Mapping) и предоставляя интересные возможности по альтернативной интерпретации данных. Разгрузка GPU позволяет использовать совершенно новые, более сложные и точные методы имитации кожи человека, ускорение морфинга, генерирование теней и экструзии, мельчайших деталей, физических и других эффектов. Direct3D 10 работает только с новыми поколениями графических акселераторов (GeForce 8800 и более поздними).
Компания Microsoft объявила о создании нового интерфейса программирования приложений DirectX 11. Первый видеоакселератор с его поддержкой выпустила компания AMD/ATI, успешно продемонстрировавшая видеоадаптеры серии Radeon HD 4000. Графическим ядром, которое будет нести в себе поддержку версии DirectX 11, называется RV870 (этот GPU стал следующим старшим продуктом этой компании). Временем поступления таких графических решений на массовый рынок был второй квартал 2009 года.