DirectX API(和 OpenGL API 调用)和 windows 上的正常系统调用有何不同?

what is different between DirectX API(and OpenGL API call) and normal system call on windows?

我对当应用程序使用 directX(或 OpenGL)功能或正常时 windows os 如何将模式从用户模式(应用程序代码)更改为内核模式(如驱动程序代码)的方法有疑问函数(类似 printf 的系统调用)。

有什么不同?

如果性能有差异,我想了解一下。

最终,输出到设备的任何内容都将涉及 user-mode/kernel-mode 转换。当您执行 printf 时,它会在 C 库调用 WriteConsole 时发生,尽管可能会在一定数量的缓冲之后发生以最小化转换次数。本质上,DirectX 和 OpenGL 会发生同样的事情:在用户模式下做尽可能多的事情,在驱动程序的内核模式下做你需要做的事情。

具体情况因 OS 的版本、您所谈论的驱动程序模型(XPDM 或 WDDM)以及您具体询问的 Direct3D 或 OpenGL 版本而异。

从应用程序开发人员的角度来看,您需要知道的是:如果您想要良好的帧速率,请尽量避免调用 Draw 无数次,每次调用时只有几个三角形。

对于 Direct3D 10 和 11,最佳通用性能建议可在 Windows to Reality: Getting the Most out of Direct3D 10 Graphics in Your Games (Gamefest 2007)

中找到

对于旧版 Direct3D 9,请参阅 Accurately Profiling Direct3D API Calls (Direct3D 9)