- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对图形编程非常陌生,并试图了解“图形编程是如何工作的”。从目前为止我读到的内容来看,我仍然不清楚 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 实现,但将其转发给设备驱动程序实现,the OpenGL Installable Client Driver .
众所周知,Windows 下 OpenGL 实现的质量因供应商而异。因此,Firefox 和 Chrome 都通过 ANGLE 执行 WebGL。 ,它将 OpenGL API 调用转换为 Direct3D API 调用,从而采用更稳定的代码路径。
关于OpenGL 和 Direct3D : From a programmer's perspective, 他们的立场如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629934/
我是一名优秀的程序员,十分优秀!