DirectX

 

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

В 1995 г. компания Microsoft представила первую версию библиотеки DirectX (тогда она называлась Game SDK). В 2004 г. вышла девятая версия DirectX (реально выпущено восемь версий, по каким-то причинам Microsoft пропустила четвертую версию). DirectX — это корпоративный стандарт, все права на который принадлежат компании Microsoft. И только Microsoft определяет, что включать в очередную версию API, а какие предложения игнорировать.

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

API DirectX предназначен для:

  • программирования двухмерной графики (модуль DirectDraw);
  • создания трехмерной графики (модуль Direct3D;
  • работы со звуками и музыкой (модули DirectSound и DirectMusic);
  • поддержки устройств ввода (модуль DirectInput);
  • разработки сетевых игр (модуль DirectPlay).

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

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