OpenGL和Direct3D:从程序员的角度来看,他们在哪里?

Sre*_*kar 4 opengl directx graphics direct3d

我是图形编程的新手,并试图理解"图形编程如何工作".从我到目前为止所读到的内容来看,我仍然不清楚OpenGL和Direct3D这些​​API的位置以及实际实现它们的位置?

驱动程序直接与硬件通信.所以NVIDIA/AMD等编写驱动程序,其他人需要在此基础上实现这些API?但我在Nvidia网站上看到了"OpenGL驱动程序",这意味着OpenGL实际上是一个直接与图形硬件对话的驱动程序级API?那么Nvidia/AMD是否实现了这些API?

我可以理解在OpenGL/Direct3D之上编写的游戏引擎等,但无法从程序员的角度弄清楚这些API的确切位置.

Ale*_*ler 6

Direct3D本身完全由Microsoft实现.但是,它指定了更低级别的API(DXGI DDIDirect3D DDI),然后由Nvidia/AMD作为设备驱动程序的一部分实现.所以D3D基本上是应用程序代码和驱动程序代码之间的垫片.图形架构的最新进展已使D3D提供的中间层变得更薄和更薄,从而降低了CPU开销.

Windows下的OpenGL实现类似:Microsoft提供面向应用程序的OpenGL API实现,但将其转发到设备驱动程序实现,即OpenGL Installable Client Driver.

众所周知,Windows下的OpenGL实现质量因供应商而异.出于这个原因,Firefox和Chrome都通过ANGLE执行WebGL ,后者将OpenGL API调用转换为Direct3D API调用,从而获得更稳定的代码路径.