Sre*_*kar 4 opengl directx graphics direct3d
我是图形编程的新手,并试图理解"图形编程如何工作".从我到目前为止所读到的内容来看,我仍然不清楚OpenGL和Direct3D这些API的位置以及实际实现它们的位置?
驱动程序直接与硬件通信.所以NVIDIA/AMD等编写驱动程序,其他人需要在此基础上实现这些API?但我在Nvidia网站上看到了"OpenGL驱动程序",这意味着OpenGL实际上是一个直接与图形硬件对话的驱动程序级API?那么Nvidia/AMD是否实现了这些API?
我可以理解在OpenGL/Direct3D之上编写的游戏引擎等,但无法从程序员的角度弄清楚这些API的确切位置.
Direct3D本身完全由Microsoft实现.但是,它指定了更低级别的API(DXGI DDI和Direct3D 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调用,从而获得更稳定的代码路径.