Por lo que entiendo, porque Windows no ofrecía DOS como el acceso directo al hardware, se creó Direct X.
Tiene razón de que Windows no ofreció DOS como el acceso directo al hardware. De hecho, ningún sistema operativo con protección de memoria lo hace.
Y sí, DirectX fue creado para ofrecer una API para acceso acelerado a ciertos tipos de hardware. DirectX es una API para acelerar el acceso al hardware, no THE (una y única).
Eso significa que Direct X es la única forma segura de lograr acceso directo (ish) al hardware. ¿Me equivoco?
Usted son mal porque nada ni nadie le impide la aplicación de otra pista para el acceso acelerado por hardware. Las piezas de software responsables de canalizar el acceso al hardware se llaman controladores. Los controladores se ejecutan en modo privilegiado, lo que significa que la protección del espacio de direcciones no se aplica a ellos. Es decir, porque los conductores deben poder comunicarse con el hardware.
Los controladores se comunican con programas regulares, el llamado Espacio de usuario a través de API. Las API pueden estar estandarizadas, luego pueden estar estrechamente especificadas o pueden ser completamente apropiadas.
DirectX es una API especificada, la especificación fue anotada por Microsoft.
OpenGL de manera similar es una API, pero en lugar de ser especificada por una sola entidad, está estandarizada de alguna forma en colaboración con varios colaboradores.
Un ejemplo para una API propicia era Glide de 3Dfx, que en gran parte estaba inspirado en OpenGL. De hecho, hay un envoltorio de compatibilidad llamado "minigl" que implementa el subconjunto de OpenGL requerido para que el motor Half-Life 1 funcione en los sistemas 3Dfx/Glide.
Los desarrolladores de controladores de los proveedores de GPU siguen las especificaciones de las API, escribiendo controladores para DirectX, OpenGL o alguna interfaz propia. Cada una de esas API da acceso al controlador y, por lo tanto, al hardware. Y puede haber múltiples API para un solo recurso. Un controlador puede implementar DirectX 3D, OpenGL y todo lo demás en paralelo y proporcionarlos a todos en el espacio del usuario.
Así que no, OpenGL no se basa en DirectX si se envía con un controlador de GPU. Windows Vista y versiones superiores se envían con una emulación OpenGL-1.4 construida sobre DirectX, pero eso no admite sombreadores, objetos de búfer de vértice y todos los otros silbidos y campanas. Tan pronto como instale un controlador GPU con soporte OpenGL, esto reemplaza completamente la emulación OpenGL-1.4 con una implementación real de bajo nivel.
Gracias por una respuesta muy informativa. – Ken
+1 Para proporcionar una respuesta precisa además de las otras respuestas no necesariamente incorrectas pero incompletas. –
Como nota aparte: minigl era para el motor de terremoto 1, que HL1 usó ... – Goz