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 объясняется его способностью обеспечить все нужды разработчиков игр и железа: от создания трехмерной графики и пользовательского интерфейса ввода до поддержки сетевых виртуальных миров.