根据我的理解,因为Windows不像直接硬件访问那样提供DOS,所以创建了DirectX.这意味着DirectX是实现直接(ish)硬件访问的唯一可靠方法.我错了吗?
如果我没有错,那么OpenGL必须使用DirectX本身或在DirectX之上实现.
那么这不是说Windows OpenGL真的是DirectX吗?
From what I understand,because Windows didn’t offer DOS like direct hardware access,Direct X was created.
你是对的,Windows没有像直接硬件访问那样提供DOS.实际上没有带内存保护的操作系统.
是的,创建DirectX是为了提供一种API来加速访问某些类型的硬件. DirectX是用于加速硬件访问的API,而不是THE(唯一的).
That means Direct X is the only sure way to achieve direct(ish) hardware access. Am I wrong?
你错了,因为没有人和没有人阻止你实现另一个加速硬件访问的轨道.负责引导访问硬件的软件称为驱动程序.驱动程序以特权模式运行,这意味着地址空间保护不适用于它们.也就是说,因为驱动程序必须能够与硬件通信.
驱动程序通过API与常规程序通信,即所谓的用户空间. API可以是标准化的,然后可以严格指定,也可以是完全有利的.
DirectX是一个指定的API,该规范由Microsoft写下.
OpenGL以类似的方式是一个API,但它不是由单个实体指定,而是以某种形式标准化,由几个贡献者协作.
专有API的一个例子是3Dfx的Glide,其中很大一部分是受OpenGL的启发.事实上,有一个名为“minigl”的兼容性包装器,它实现了Half-Life 1引擎在3Dfx / Glide系统上工作所需的OpenGL子集.
GPU供应商的驱动程序开发人员遵循API的规范,为DirectX,OpenGL或某些专有接口编写驱动程序.每个API都可以访问驱动程序,从而访问硬件.并且单个资源可能有多个API.驱动程序可以实现DirectX 3D,OpenGL以及其他任何并行操作,并将它们全部提供给用户空间.
所以不,如果装有GPU驱动程序,OpenGL不会构建在DirectX之上. Windows Vista及更高版本附带了一个构建在DirectX之上的OpenGL-1.4仿真,但它不支持着色器,顶点缓冲对象以及所有其他的口哨和铃声.一旦安装了支持OpenGL的GPU驱动程序,这就完全取代了OpenGL-1.4仿真与实际的低级实现.