Из того, что я понимаю, поскольку Windows не предлагала DOS, например, прямой аппаратный доступ, был создан Direct X.
Вы правы, что Windows не предлагала DOS, как прямойаппаратный доступ.Фактически ни одна операционная система с защитой памяти не поддерживает.
И да, DirectX был создан, чтобы предложить a API для ускоренного доступа к определенным типам оборудования.DirectX - это a API для ускоренного доступа к оборудованию, а не THE (один-единственный).
Это означает, что Direct X является единственным надежным способом достиженияпрямой (ish) доступ к оборудованию.Я не прав?
Вы не правы, потому что ничто и никто не мешает вам внедрить другую дорожку для ускоренного доступа к оборудованию.Части программного обеспечения, отвечающие за направление доступа к оборудованию, называются драйверами.Драйверы работают в привилегированном режиме, то есть защита адресного пространства к ним не относится.Это означает, что драйверы должны иметь возможность взаимодействовать с оборудованием.
Драйверы взаимодействуют с обычными программами, так называемым User Space через API.API-интерфейсы могут быть стандартизированы, затем могут быть строго определены или могут быть полностью проприетарными.
DirectX - это указанный API, спецификация была записана Microsoft.
Аналогичным образом OpenGL - это API, но вместо того, чтобы быть заданным одной сущностью, он в некоторой форме стандартизированв сотрудничестве с несколькими участниками.
Одним из примеров собственного API был Glide by 3Dfx, который в значительной степени был вдохновлен OpenGL.Фактически существует оболочка совместимости под названием «minigl», реализующая подмножество OpenGL, необходимое для работы движка Half-Life 1. на системах 3Dfx / Glide.
Разработчики драйверов поставщиков графических процессоров следуют спецификациям API,написание драйверов для DirectX, OpenGL или какого-то частного интерфейса.Каждый из этих API предоставляет доступ к драйверу и, следовательно, к оборудованию.И может быть несколько API для одного ресурса.Драйвер может реализовывать DirectX 3D, OpenGL и все остальное параллельно и предоставлять их всем в пространство пользователя.
Так что нет, OpenGL не построен поверх DirectX, если поставляется с драйвером графического процессора.Windows Vista и выше поставляются с эмуляцией OpenGL-1.4, созданной поверх DirectX, но она не поддерживает шейдеры, объекты буфера вершин и все другие свистки и колокольчики.Как только вы устанавливаете драйвер графического процессора с поддержкой OpenGL, это полностью заменяет эмуляцию OpenGL-1.4 фактической реализацией низкого уровня.