Файл: Контрольные вопросы Что такое api Дайте развернутый ответ Для чего нужен api Дайте развернутый ответ.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 57

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход). Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны — даёт свободу внедрения различных инноваций.

DirectX (от англ. direct — прямой, непосредственный) — это набор API, разработанных для решения задач, связанных с программированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр.

В целом, 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 (например, доступ к клавиатуре/джойстику/мыши, поддержка звука, игры по сети и т. д.).

OpenAL (англ. Open Audio Library) — кроссплатформенный интерфейс программирования приложений (API) для работы с аудиоданными. Ключевой особенностью является работа со звуком в 3D пространстве и использование эффектов EAX. Поддерживается компанией Creative.

OpenAL создан фирмой Loki Software как инструмент для их бизнеса — портирование игр с Microsoft Windows на GNU/Linux. После закрытия компании проект некоторое время разрабатывался сообществом свободного ПО — оно добавило функционал звукового чипсета, встроенного в NVIDIA nForce. Сегодня проект размещён на сервере компании Creative Technology, и по большей части разрабатывается ей. Также проект активно развивают компании Apple, Blue Ripple Sound и сообщество свободного ПО.

Хотя хартия OpenAL гласит, что у проекта должен быть «Наблюдательный совет за архитектурой» (ARB), аналогичный проекту OpenGL ARB, до сих пор ни одна организация не взяла на себя обязанность сформировать стандарт технических спецификаций OpenAL. Спецификации OpenAL существуют в черновом варианте, обсуждаются разработчиками по электронной почте и в общедоступных списках рассылки.

Основные функции библиотеки OpenAL — исходные объекты, аудиобуферы, и единственный слушатель. Исходные объекты включают в себя указатель на буфер, скорость, позицию, направление и интенсивность звука. Слушатель содержит скорость, позицию, направление и общее усиление звука в целом. Буферы содержат аудиоданные в формате PCM в 8-ми либо 16-битном варианте, а также в моно или стерео. Функция рендеринга звука производит необходимые вычисления, такие как определение расстояния, эффекта Доплера, и так далее.



Для конечного пользователя результат обработки этих компонентов OpenAL даёт совершенно естественное звучание при перемещении персонажей в трёхмерном виртуальном мире. А программист может легко задействовать OpenAL в своей готовой трёхмерной OpenGL-программе.

В отличие от спецификаций OpenGL, спецификации OpenAL включают в себя два API: ядро, включающее в себя вызовы функций OpenAL, и ALC (Audio Library Context) — API, используемый для управления контекстом рендеринга, контролем использования ресурсов и задействования блокировок в мультипоточных вычислениях. Также существует ALUT — библиотека, предоставляющая функции высокого уровня для упрощения написания программы, она аналогична библиотеке GLUT у OpenGL.

OpenAL расширяем: программисты, либо компании, не входящие в число разработчиков OpenAL, могут добавлять в него свои расширения. Например, для того чтобы «научить» библиотеку задействовать функции своих устройств с закрытыми спецификациями. Расширения могут быть повышены до уровня ARB, то есть войти в спецификации OpenAL в её новой версии.

Для расширенной обработки цифрового сигнала или аппаратного ускорения звука могут быть задействованы EFX (Effects Extension) или EAX.

Pluggable Authentication Modules (PAM, подключаемые модули аутентификации) — это набор разделяемых библиотек, которые позволяют интегрировать различные низкоуровневые методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить единые механизмы для управления, встраивания прикладных программ в процесс аутентификации. Является одной из частей стандартного механизма обеспечения безопасности UNIX-систем.

PAM была впервые предложена Sun Microsystems в октябре 1995 года. В качестве автономной инфраструктуры PAM впервые появился в Linux-PAM, разработанной в Red Hat Linux 3.0.4 в августе 1996 года. В настоящее время PAM поддерживается в операционных системах AIX, DragonFly BSD, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD и Solaris.

Windows API (англ. application programming interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт». Является самым прямым способом взаимодействия приложений с Windows. Для создания программ, использующих Windows API, «Майкрософт» выпускает комплект разработчика программного обеспечения, который называется Platform SDK, и содержит документацию, набор библиотек, утилит и других инструментальных средств для разработки.


Windows API спроектирован для использования в языке Си для написания прикладных программ, предназначенных для работы под управлением операционной системы MS Windows. Работа через Windows API — это наиболее близкий к операционной системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств, в текущих версиях Windows предоставляется через Windows Driver Model.
Windows API представляет собой множество функций, структур данных и числовых констант, следующих соглашениям языка Сиcu. Все языки программирования, способные вызывать такие функции и оперировать такими типами данных в программах, исполняемых в среде Windows, могут пользоваться этим API. В частности, это языки C++, Pascal, Visual Basic и многие другие.

Для облегчения программирования под Windows, в компании Microsoft и сторонними разработчиками было предпринято множество попыток создать библиотеки и среды программирования, частично или полностью скрывающие от программиста особенности Windows API, и предоставляющие ту или иную часть его возможностей в более удобном виде. В частности, сама Microsoft в разное время предлагала библиотеки Active Template Library (ATL)/Windows Template Library (WTL), Microsoft Foundation Classes (MFC), .Net/WinForms/WPF. Компания Borland (ныне Embarcadero, её преемник в части средств разработки) предлагала OWL и VCL. Есть кросс-платформенные библиотеки, такие как Qt, Tk и многие другие. Весомая часть этих библиотек сконцентрирована на облегчении программирования графического интерфейса пользователя.

Для облегчения переноса на другие платформы программ, написанных с опорой на Windows API, сделана библиотека Wine.

Wine (/waɪn/ — между «уа́йн» и «вайн», рус. Вино) — свободное программное обеспечение, позволяющее пользователям UNIX-подобных систем архитектуры x86 (и других архитектур, при наличии совместимости, например, AMD64) исполнять 16-, 32- и 64- битные приложения Microsoft Windows (64-битные приложения находятся в стадии ранней реализации). Wine также предоставляет программистам библиотеку программ Winelib, при помощи которой они могут компилировать Windows-приложения для портирования их в UNIX-подобные системы. Название Wine является рекурсивным акронимом и расшифровывается «Wine Is Not an Emulator» — «Wine — не эмулятор» (имеется в виду, что Wine не является эмулятором компьютера, как, например, qemu или VirtualBox, Wine — это альтернативная реализация Windows API). Wine распространяется на условиях лицензии GNU LGPL.


Проект сталкивается с большими трудностями вследствие неполноты или отсутствия документации по многим элементам Win32 API. В то время как функции Win32 в основном документированы, существует масса областей (таких как файловые форматы или протоколы Microsoft), спецификации на которые никогда не публиковались. Таким образом, команде разработчиков Wine приходится заниматься обратной разработкой этих компонентов.

Wine воспринимает системные вызовы Windows-приложений к библиотекам операционной системы и подменяет их своими. Таким образом, эмуляции процессора, аналогично другим эмуляторам типа VMware и QEMU, не происходит, и приложения могут выполняться в Wine почти так же быстро, как и в «родной» операционной системе (а в некоторых случаях и быстрее). Для своей работы Wine не требует наличия установленной ОС Windows, хотя и может использовать её библиотеки.

Также Wine предоставляет инструментарий разработки программ Winelib для переноса унаследованных исходных кодов из среды Windows в среду UNIX путём простой перекомпиляции.

Wine, безусловно, не является стабильным продуктом, и нельзя сказать, что любую программу для Windows удастся запустить с его помощью. Некоторые подсистемы Windows вообще практически не реализованы. Тем не менее, уже сейчас многие из повсеместно используемых Windows-приложений полноценно запускаются и работают в UNIX-подобных ОС при помощи Wine. Особенно это касается приложений, которые не используют недокументированные возможности Windows. В Microsoft официально не делали никаких публичных заявлений по поводу Wine. Однако Microsoft Update будет блокировать обновления для программного обеспечения от Microsoft, если программы будут запущены в средах, основанных на Wine. 16 февраля 2005 Ivan Leo Puoti обнаружил, что Microsoft начала проверять системный реестр в поисках конфигурационных ключей, оставленных Wine и будет блокировать доступ к Windows Update для любого компонента. Windows Genuine Advantage (WGA) также проверяет на наличие ключей реестра от Wine. В WGA FAQ заявлено, что WGA, по своему предназначению, не будет работать в Wine, поскольку Wine не является «подлинной Windows». Когда проверка WGA определяет, что в системе запущен Wine, пользователю будет выдано сообщение, гласящее о том, что он запустил не подлинную Windows, и «загрузки ПО для подлинной Windows» не будут разрешены для этой системы. Тем не менее, было несколько сообщений о работе WGA в Wine, однако и эта возможность использования была закрыта в следующем обновлении компонента WGA. В случаях с Internet Explorer 7 и Windows Media Player, впоследствии, Microsoft удалила требования проверки WGA для установки. Несмотря на то, что Wine представляет собой довольно мощный программный продукт, у него есть определённые проблемы реализации. К примеру, разработчики намеренно не заявляют поддержку USB, однако по словам самих же разработчиковработа с USB драйверами возможна.