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

时间:2014-09-02 18:28:00

标签: opengl graphics directx direct3d

我对图形编程非常陌生并试图理解“图形编程如何工作”。从我到目前为止所读到的内容来看,我还不清楚OpenGL和Direct3D等API的位置以及实际实现它们的位置?

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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